26

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

4

1 回答 1

48

窗口是所有内容的父容器,因此在窗口上设置不透明度将影响它包含的所有内容。我认为你想要做的是Opacity改变Window.Background.

使窗口具有透明度需要添加几件事。首先,您需要设置Window.AllowsTransparency = True并设置Window.WindowStyle = None. WindowStyle.None在窗口镶边中创建一个没有最小化、最大化和关闭按钮的窗口,因此您必须自己在应用程序中处理它以及调整窗口大小和移动窗口。完成后,您可以将其设置Window.Background为有一个带有Opacity套装的画笔。

以下代码示例将向您展示如何让窗口始终透明并将窗口背景的不透明度设置为具有不同的不透明度。

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

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

于 2012-09-28T20:58:11.543 回答