如何使Popup真正模态(类似于MessageDialog)

时间:2013-12-05 17:06:16

标签: c# .net xaml windows-store-apps winrt-xaml

我正在尝试显示弹出/模态对话框,其中包含文本框或其他一些附加控件。为此,我将UserControl设置为Popup的子项。 Popup的宽度和高度设置为全屏,因此用户无法与后台的ui元素进行交互。

但是,我意识到其他弹出窗口可以显示在我最初显示的Popup上。因此,这不是真正的模态控制。有没有办法让Popup完全模态化(阻止任何其他UI元素,包括其他弹出窗口)。或者是否有另一个控件可用于显示某种形式的自定义消息对话框?

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:3)

你这样做:

<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>

IsLightDismissEnabled="False"部分很重要。

祝你好运!