I've defined a custom MessageDelegate to pass to .Confirm(...) on my FormBuilder. (See screenshot.)
My issue is that I'd like to customize the Navigation menu that appears when a user selects "No" on the Confirm dialog. I found this SO post which seems to be heading in the right direction, but I want more customization. I still want the list of buttons to appear, but I want to be able to specify which buttons appear/don't appear, as well as the text on each button, rather than having it auto-populated by FormFlow.
For example:
In my use case, I have a
HasMiddleNamefield followed by aMiddleNamefield that only appears to the user if theHasMiddleNamefield receives a "Yes" answer. I want the Navigation to only show "Middle Name" similar to how it shows First/Last. And if the user selects the Middle Name, I want it to redirect to theHasMiddleNamepart of the form.Another tweak is that I'd like to be able to format the Date of Birth to show only
MM/dd/yyyy.
I tried to play around with using the Pattern language, but couldn't get it work... Is what I want possible? If I manually create the dialog I'd like to show how can I associate that with the FormFlow's navigation?

The navigation step is a bit tricky to customize, so I've come up with a solution that lets you work around that. The trick is to make sure the
MiddleNamefield is inactive when the navigation step rolls around and to have theHasMiddleNamefield masquerade as theMiddleNamefield so that clicking on it will take you to theHasMiddleNamefield.On the other hand, there's another avenue to explore if you really want control over what buttons show up in the navigation step. The above code should serve you well but I feel like I should briefly mention this other trick because I wrote a post about how to do it. If you make your own prompter, you can check if the field name equals
__navigation__in yourPromptAsyncdelegate and then generate a message accordingly. Keep in mind that you'd still have to use some of the first solution to make sure clicking on "Middle Name" takes you to theHasMiddleNamefield.