次の外観のウィンドウがあります。
ただし、Button
のメインWindow
内のGrid
コントロール(テキストが中央にある灰色のコントロール)の不透明度が1で、完全に不透明であることが望まれます。このプロジェクトを継承すると、トップレベルの開始Window
タグ内の不透明度が0.75に設定されました。私が理解しているように、これはすべての子に自動的にそれを強制し、子はオーバーライドできません。
どのようにして透明な背景で不透明なボタンを実現できますか?私がこれまでに見つけた唯一の方法(WPFの比較的初心者)は、2つの独立したウィンドウを持つことです。1つは透明な背景で、もう1つは背景がなく不透明なコントロールを含みます。しかし、これはひどくハッキーです。できればそれを避けたいです。
要求があればコードを提供できますが、windowstyle = noneとWindow
を含むopacity .75を持つGrid
と同じくらい簡単です。これには非常に基本的なButton
などのコントロールが含まれます。
誰かがそのようなWindow
を以前に作成したことがありますか、それ以外の方法でそれを生成する洞察を持っていますか?ありがとう。
ウィンドウの不透明度を設定する代わりに、背景の不透明度を設定します。
<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>
このようなスタイルを作成する場合:
<Window.Resources>
<Style TargetType="Button" x:Key="WindowButtons">
<Setter Property="Opacity" Value="1"/>
</Style>
</Window.Resources>
次に、次のようにボタンのXAMLでそれらを参照できます。
<Button Style="{StaticResource WindowButtons}">Tony</Button>
また、親から不透明度を継承する必要はありません。
上記の効果は、デザイナーからの不透明度を100%から60%(必要に応じて)に設定することでも実現できます。