我正在尝试使用 WPF 制作一个覆盖整个屏幕的半透明弹出窗口。这个想法是有效地创建我们在使用各种网页时经常看到的灯箱样式效果。应用程序全屏运行(没有关闭、最小化等选项)并替换 Windows 外壳。因此,窗口需要拉伸以覆盖整个屏幕。想要的效果是弹出一个覆盖全屏的新窗口。此窗口将具有半透明背景,其中一些中心内容将完全不透明。与中心内容的交互将是用户与应用程序交互的唯一方式。
我面临的问题是当 AllowsTransparency 设置为 False 时,窗口不透明,如您所料。但是当我设置 AllowsTransparency="True" 时,窗口及其所有内容(包括中心内容)都是完全透明的。新窗口虽然不可见,但正在停止与系统的任何交互。
有没有其他人遇到过这个问题,在设置 AllowsTransparence="true" 时窗口根本不可见,或者更好地找到解决方案或解决它?
窗口的 xml 是:
<Window x:Class="Views.BorderedPopupView"
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"
mc:Ignorable="d" Background="{DynamicResource WindowBackground}" AllowsTransparency="True">
<Window.Resources>
<SolidColorBrush x:Key="TranslusentBrush" Opacity="0.1"/>
<SolidColorBrush x:Key="WindowBackground" Color="Transparent"/>
</Window.Resources>
<Viewbox StretchDirection="Both" Stretch="Fill" Margin="5,0,13,-8" >
<Grid Height="768" Width="1024" Background="{StaticResource TranslusentBrush}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"></ColumnDefinition>
<ColumnDefinition Width="6*"></ColumnDefinition>
<ColumnDefinition Width="2*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="2*"></RowDefinition>
<RowDefinition Height="6*"></RowDefinition>
<RowDefinition Height="2*"></RowDefinition>
</Grid.RowDefinitions>
<Grid Opacity="1" Grid.Row="1" Grid.Column="1">
<ContentControl x:Name="Popup" Grid.Row="1" Grid.Column="1"/>
</Grid>
</Grid>
</Viewbox>
</Window>