.net 更改背景不透明度而不更改内容不透明度

.net 更改背景不透明度而不更改内容不透明度,.net,wpf,opacity,.net,Wpf,Opacity,我想知道如何在不影响内部子控件的情况下更改WPF窗口背景的不透明度。当我将窗口属性“不透明度”更改为0.5时,我确实得到了一个半透明窗口,但窗口内的图像也继承了0.5不透明度值,因此如何仅为窗口设置不透明度?窗口是所有内容的父容器,因此在窗口上设置不透明度将影响其包含的所有内容。我想你要做的是改变窗口背景的不透明度 使一个窗口具有透明度需要添加一些内容。首先,您需要设置Window.allowsttransparency=True,还需要设置Window.WindowStyle=NoneWind

我想知道如何在不影响内部子控件的情况下更改WPF窗口背景的不透明度。当我将窗口属性“不透明度”更改为0.5时,我确实得到了一个半透明窗口,但窗口内的图像也继承了0.5不透明度值,因此如何仅为窗口设置不透明度?

窗口是所有内容的父容器,因此在窗口上设置不透明度将影响其包含的所有内容。我想你要做的是改变
窗口背景的
不透明度

使一个窗口具有透明度需要添加一些内容。首先,您需要设置
Window.allowsttransparency=True
,还需要设置
Window.WindowStyle=None
WindowStyle.None
创建的窗口没有窗口chrome中的最小化、最大化和关闭按钮,因此在调整窗口大小和移动窗口时,您必须自己在应用程序中处理这些按钮。完成后,您可以将
Window.Background
设置为有一个设置了
不透明度的笔刷

下面的代码示例将向您展示如何使窗口始终透明,并将窗口背景的不透明度设置为不同的不透明度

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        x:Class="WpfApplication1.MainWindow"
        x:Name="Window"
        WindowStyle="None"
        AllowsTransparency="True">
    <Window.Background>
        <SolidColorBrush Color="White" Opacity="0.5"/>
    </Window.Background>
    <Grid>
        <!--Window Content-->
    </Grid>
</Window>


如果您只想让窗口中的元素可见,则可以始终将窗口背景设置为透明。

只需订阅您的问题,看看这是否可行,我认为不可行,但以防万一。您是否尝试将其设置为“透明”颜色,并添加一个不影响其他对象的半透明矩形?我正在使用样式模板。为了使用属性设置器,我将背景颜色的alpha设置为所需的不透明度级别,并将背景rgb代码复制到背景设置器中。:)很好用!我认为这是一个重要的细微差别。一、 同样,正在设置控件的背景和不透明度属性。以这种方式使用属性可以更好地控制嵌入式控件的外观。