KrispyDonuts
KrispyDonuts

Reputation: 1262

How to make Popup truly modal (similar to MessageDialog)

I am trying to display a popup/modal dialog which includes a textbox or some other additional control. To achieve this, I am setting a UserControl as a child of the Popup. The Popup's width and height are set to full screen so user interaction with ui elements in the background is not possible.

However, I realized that other popups can be displayed over the Popup that I was initially displaying. Thus making this not truly a modal control. Is there a way to make Popup completely modal (block any other UI elements including other Popups). Or is there another control i can use to display some kind of customized message dialog that is modal?

Any help is appreciated, thanks!

Upvotes: 1

Views: 2113

Answers (1)

Jerry Nixon
Jerry Nixon

Reputation: 31813

You do it like this:

<Grid x:Name="LayoutRoot" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Popup x:Name="MyModalPopup" IsOpen="True" IsLightDismissEnabled="False">
        <Grid Width="{Binding ActualWidth, ElementName=LayoutRoot, Mode=OneWay}" Height="{Binding ActualHeight, ElementName=LayoutRoot, Mode=OneWay}">
            <Grid.Background>
                <SolidColorBrush Color="White" Opacity=".25" />
            </Grid.Background>
            <Grid Width="500" Height="400" Background="Green" VerticalAlignment="Center" HorizontalAlignment="Center">
                <Button VerticalAlignment="Center" HorizontalAlignment="Center" Content="Close">
                    <Interactivity:Interaction.Behaviors>
                        <Core:EventTriggerBehavior EventName="Click">
                            <Core:ChangePropertyAction TargetObject="{Binding ElementName=MyModalPopup}" PropertyName="IsOpen"/>
                        </Core:EventTriggerBehavior>
                    </Interactivity:Interaction.Behaviors>
                </Button>
            </Grid>
        </Grid>
    </Popup>
</Grid>

The IsLightDismissEnabled="False" part is important.

Best of luck!

Upvotes: 3

Related Questions