26

内側の子コントロールに影響を与えずに、WPFウィンドウの背景の不透明度を変更する方法を知りたいと思いました。Windowプロパティの「Opacity」を0.5に変更すると、半透明のウィンドウが表示されますが、ウィンドウ内の画像も0.5の不透明度の値を継承しているので、ウィンドウの不透明度のみを作成するにはどうすればよいですか?

4

1 に答える 1

48

ウィンドウはすべての親コンテナであるため、ウィンドウに不透明度を設定すると、ウィンドウに含まれるすべてのものに影響します。あなたがやりたいのはのを変えることだと思いOpacityますWindow.Background

ウィンドウで透過性を有効にするには、いくつか追加する必要があります。まず、を設定する必要があります。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>

ウィンドウ内の要素のみを表示したい場合は、ウィンドウの背景をいつでも透明に設定できます。

于 2012-09-28T20:58:11.543 に答える