在WPF中打开模式对话框时的灰色主窗口

时间:2015-02-12 21:04:21

标签: .net wpf xaml

当从主窗口打开模态对话框时,我希望用灰色覆盖主窗口。 WPF中是否有标准解决方案来模拟这种效果?

这里有一个例子:

2 个答案:

答案 0 :(得分:3)

此功能没有内置功能,但应该易于实现。

在主窗口中,您需要顶层没有已定义列或行的网格,因此它只是占用所有客户区域的单个单元格。 Grid的第一个子节点是UserControl,它实现应用程序的所有正常内容。第二个孩子只是一个矩形,前面是半透明的灰色。将其Visibility数据绑定到主窗口上的相应属性或ViewModel的属性(即应用程序的DataContext)。

每当您显示模态对话框时,您都需要设置相应的属性以显示矩形,并在删除模式对话框时将属性重置为false。您可以添加一个继承自Window的基类,该基类自动执行此操作,然后从该基类派生所有实际对话框。

答案 1 :(得分:0)

与所有XAML一样,有一百万种方法可以遮盖这只猫,但这里有一个例子:

<强> Dialog.xaml:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
        WindowStyle="None"
        AllowsTransparency="True"
        WindowStartupLocation="CenterOwner" 
        WindowState="Maximized"
        Background="#33000000">

    <Grid Width="323" Height="200" VerticalAlignment="Center" HorizontalAlignment="Center" Background="#FFFFFF">
        <!-- grid things go here -->
    </Grid>
</Window>

这将打开全屏,并用灰色遮罩覆盖原始应用程序。对话框的内容将位于带有白色背景的居中网格中。