ボタンのスタイルをよりフラットに変更したかったので、2 つのスタイルを作成しました。最初ToggleButton
は から派生しToolBar.ToggleButtonStyleKey
、2 番目Button
は から派生しToolBar.ButtonStyleKey
ます。
それはうまくいきました - ボタンはツールバーのようになり、フラットになりました。私が欲しかった2番目のことはBackground
、ユーザーがカーソルをコントロールの上に置いたときにプロパティを透明にすることです。Background
これを実現するために、 to Transparent
onIsMouseOver
イベントを設定する単純なトリガーを定義しました。では機能しましたToggleButton
が、同じトリガーでは機能しませんでしたButton
(背景はまったく影響を受けませんでした)。
このトリガーがなぜうまく機能しToggleButton
、機能しないのか誰か知っていButton
ますか? 両方のスタイルが同じファミリに属しているため、同じ動作を期待していました。
以下は完全なコードです。
<Window x:Class="WpfButtonsTest.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">
<Window.Resources>
<Style x:Key="FlatToggleButton" TargetType="ToggleButton"
BasedOn="{StaticResource {x:Static ToolBar.ToggleButtonStyleKey}}">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Focusable" Value="False"/>
<Setter Property="Background" Value="Transparent"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Transparent"/>
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="FlatButton" TargetType="Button"
BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Focusable" Value="False"/>
<Setter Property="Background" Value="Transparent"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Transparent"/>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<StackPanel>
<ToggleButton Style="{StaticResource FlatToggleButton}">
I am Toggle Button
</ToggleButton>
<Button Style="{StaticResource FlatButton}">
I am Button
</Button>
</StackPanel>
</Grid>
</Window>