【发布时间】:2020-04-14 22:22:07
【问题描述】:
【问题讨论】:
-
Nice Guttsy,它是免费的扩展 WPF 工具包,不是吗?
-
是的,有一个免费的社区版,以及一个有额外控制的付费版。
【问题讨论】:
没有内置功能,但应该很容易实现。
在您的主窗口中,您需要一个没有定义列或行的顶层网格,因此它只是一个占据所有客户区的单元格。 Grid 的第一个子项是实现应用程序所有正常内容的 UserControl。第二个孩子只是一个以半透明灰色作为前景的矩形。将其 Visibility 数据绑定到主窗口上的适当属性或 ViewModel 的属性(即应用程序的 DataContext)。
每当你显示一个模态对话框时,你设置适当的属性来显示矩形,当模态对话框被移除时,它会将属性重置为 false。您可以添加一个继承自 Window 的基类,它会自动执行此操作,然后从该基类派生所有实际对话框。
【讨论】:
与所有 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>
这将打开全屏,并用灰色蒙版覆盖原始应用程序。对话框的内容将位于居中的白色背景网格中。
【讨论】: