Task: We need to ask the user for a number of values by presenting a complex dialog with a number of entry fields nicely arranged.
Solution: An arbitrary dialog can be shown using standard XAF concepts. Any XAF form is a window that shows a certain view. To show a dialog, we create a non-persistent class with properties representing entry fields and show a DetailView of its instance via the PopupWindowShowAction. The class we created is included in the application model and has its default generated detail view, which we can customize to achieve the desired layout. Besides querying simple values, we can add a collection-type property to the dialog class to allow selecting items from the list. This selection can be read in the action's Execute event by accessing ListPropertyEditor representing the nested list view. The popup window displayed via the action contains the usual OK and Cancel action buttons provided by the DialogController. If necessary, you can provide additional action buttons by creating a controller for the dialog class with the Category set to PopupActions.
Note, to show collections in an editable detail view on the Web, use this solution.