【问题标题】:Gray main window when open modal dialog in WPF在 WPF 中打开模式对话框时的灰色主窗口
【发布时间】:2020-04-14 22:22:07
【问题描述】:

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

这里有一个例子:

【问题讨论】:

标签: .net wpf xaml


【解决方案1】:

没有内置功能,但应该很容易实现。

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

每当你显示一个模态对话框时,你设置适当的属性来显示矩形,当模态对话框被移除时,它会将属性重置为 false。您可以添加一个继承自 Window 的基类,它会自动执行此操作,然后从该基类派生所有实际对话框。

【讨论】:

  • 你说得对,菲尔。我可以尝试实现它。我想确保没有内置功能。但你的方法听起来很合理。谢谢
  • 惊人的解决方案!
【解决方案2】:

与所有 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>

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

【讨论】:

    猜你喜欢
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多