答案 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>
这将打开全屏,并用灰色遮罩覆盖原始应用程序。对话框的内容将位于带有白色背景的居中网格中。