the problem here, presenting a dialog changes the stacking order of the sibling components. One possible solution:
1. Create a new empty GUI component as big as the application component itself.
2. Add this component to your application component. It will serve as a kind of container for your dialog (or all other dialogs).
3. Arrange the new container component so that it lies behind your top-most menu component.
4. When you present a dialog, do it in context of the container component instead of the application component. For example:
Container.PresentDialog( dialog, ... );
The dialog component will thus be limited to the container component and will not affect the stacking order of the components within the application component. The menu component remains on top of the dialogs.
See also the section The methods: PresentDialog, DismissDialog and SwitchToDialog. It explaines the possibility of nesting dialogs within another components or even nesting of dialogs one inside another.
Does it help you?