web-dev-qa-db-ja.com

不透明なコントロールを含む透明な背景を持つWPFウィンドウ

次の外観のウィンドウがあります。

enter image description here

ただし、ButtonのメインWindow内のGridコントロール(テキストが中央にある灰色のコントロール)の不透明度が1で、完全に不透明であることが望まれます。このプロジェクトを継承すると、トップレベルの開始Windowタグ内の不透明度が0.75に設定されました。私が理解しているように、これはすべての子に自動的にそれを強制し、子はオーバーライドできません。

どのようにして透明な背景で不透明なボタンを実現できますか?私がこれまでに見つけた唯一の方法(WPFの比較的初心者)は、2つの独立したウィンドウを持つことです。1つは透明な背景で、もう1つは背景がなく不透明なコントロールを含みます。しかし、これはひどくハッキーです。できればそれを避けたいです。

要求があればコードを提供できますが、windowstyle = noneとWindowを含むopacity .75を持つGridと同じくらい簡単です。これには非常に基本的なButtonなどのコントロールが含まれます。

誰かがそのようなWindowを以前に作成したことがありますか、それ以外の方法でそれを生成する洞察を持っていますか?ありがとう。

47
kmarks2

ウィンドウの不透明度を設定する代わりに、背景の不透明度を設定します。

<Window x:Class="WpfApplication3.MainWindow"
        xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"
        AllowsTransparency="True" WindowStyle="None">
    <Window.Background>
        <SolidColorBrush Opacity="0.5" Color="White"/>
    </Window.Background>
    <Grid>
        <Button Width="200" Height="50">button</Button>
    </Grid>
</Window>
96
svinja

このようなスタイルを作成する場合:

<Window.Resources>
    <Style TargetType="Button" x:Key="WindowButtons">
        <Setter Property="Opacity" Value="1"/>           
    </Style>
</Window.Resources>

次に、次のようにボタンのXAMLでそれらを参照できます。

<Button Style="{StaticResource WindowButtons}">Tony</Button>

また、親から不透明度を継承する必要はありません。

1
TylerD87

上記の効果は、デザイナーからの不透明度を100%から60%(必要に応じて)に設定することでも実現できます。

1
RSB