为什么使用AllowsTransparency =“True”时我的窗口是透明的?

我正在尝试使用WPF制作覆盖整个屏幕的透明弹出窗口。 这个想法是为了有效地创建我们在使用各种网页时经常看到的灯箱风格效果。 该应用程序运行全屏幕(没有选项关闭,最小化等),并取代了Windows外壳。 正因为如此,窗户需要伸展才能覆盖整个屏幕。 预期的效果是弹出一个覆盖整个屏幕的新窗口。 此窗口将具有半透明背景,其中一些中心内容将完全不透明。 与中心内容的交互将是用户与应用程序交互的唯一途径。

我正面临的问题是,当AllowsTransparency设置为False时,窗口不透明,如您所期望的那样。 但是,当我设置AllowsTransparency =“True”时,窗口及其所有内容(包括中央内容)都是完全透明的。 新窗口隐藏在那里,并停止与他们系统的任何交互。

有没有其他人遇到过这个问题,当AllowsTransparence =“true”被设置时,windows根本不可见,或者甚至更好地找到解决方案或解决它?

该窗口的xaml是:

<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>

我前几天碰到类似的东西。 出于某种原因,当您设置AllowsTransparency =“True”时,您还必须为窗口指定宽度和高度,否则整个事物将变得不可见。

我做了同样的事情,并且将WindowState设置为Maximized,但在我指定宽度和高度之前,窗口没有被看到。


您的Grid出现在z顺序的其他元素上方,因此点击将被拦截。 要关闭该Grid命中测试,请设置IsHitTestVisible="false"


如果您不调整窗口大小,请尝试将ResizeMode =“CanResizeWithGrip”或ResizeMode =“NoResize”设置为窗口。

链接地址: http://www.djcxy.com/p/25913.html

上一篇: Why is my window transparent when using AllowsTransparency="True"

下一篇: How do I make a WPF window movable by dragging the extended window frame?