2012-09-28 80 views
19

我想知道如何更改WPF窗口背景的不透明度而不影响内部子控件。当我将Window属性'Opacity'更改为0.5时,我得到了一个半透明窗口,但窗口内的图像也继承了0.5不透明度值,所以我怎样才能使窗口不透明?更改背景不透明度而不更改内容不透明度

+0

只是订阅你是问题,看看这是否可能,我认为这不是,但以防万一。您是否尝试将其设置为“透明”颜色并添加,例如,半透明矩形不会影响对象的其余部分? – NestorArturo

回答

30

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

启用一个窗口来实现透明度涉及到一些要添加的内容。首先,您需要设置Window.AllowsTransparency = True并设置Window.WindowStyle = NoneWindowStyle.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> 

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

+0

我正在使用样式模板。为了让它适应属性设置器,我将背景色的alpha设置为所需的不透明度级别,并将背景RGB代码复制到背景设置器。 :)完美的作品! – C4u