2012-09-28 74 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