根据状态设置切换按钮的背景
Setting background of a toggle button based on its state
如果 isChecked=true 或 false 并且鼠标悬停在控件上,我正在尝试将切换按钮的背景色设置为透明。这么说吧,在任何情况下。
这是我最后试过的:
<ToggleButton DockPanel.Dock="Right" Width="48" IsChecked="{Binding DownloadImages}">
<ToggleButton.Style>
<Style TargetType="{x:Type ToggleButton}">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Background" Value="Aqua"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" Value="Red"/>
</Trigger>
<DataTrigger Binding="{Binding DownloadImages}" Value="True">
<Setter Property="Background" Value="Green"/>
<Setter Property="Content">
<Setter.Value>
<Image Style="{StaticResource ToggleOnImage}" />
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding DownloadImages}" Value="False">
<Setter Property="Background" Value="Blue"/>
<Setter Property="Content">
<Setter.Value>
<Image Style="{StaticResource ToggleOffImage}" />
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ToggleButton.Style>
遗憾的是它产生了以下结果:
这表明只有蓝色背景 setter 有效。
图像正确交换,只有 On 状态和 MouseOver 的背景保持 windows 风格的蓝色。
你知道我做错了什么吗?
在这种情况下,我不得不完全重写模板 属性,我建议大家这样做。始终自定义模板,即使您不想编辑任何内容。 xaml 一半的问题都可以解决。
并避免其他一堆代码错误:始终设置 ControlTemplate 的 TargetType。
代码:
<ToggleButton.Style>
<Style TargetType="{x:Type ToggleButton}">
<Setter Property="Template"/>
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid....>
如果 isChecked=true 或 false 并且鼠标悬停在控件上,我正在尝试将切换按钮的背景色设置为透明。这么说吧,在任何情况下。
这是我最后试过的:
<ToggleButton DockPanel.Dock="Right" Width="48" IsChecked="{Binding DownloadImages}">
<ToggleButton.Style>
<Style TargetType="{x:Type ToggleButton}">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Background" Value="Aqua"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Background" Value="Red"/>
</Trigger>
<DataTrigger Binding="{Binding DownloadImages}" Value="True">
<Setter Property="Background" Value="Green"/>
<Setter Property="Content">
<Setter.Value>
<Image Style="{StaticResource ToggleOnImage}" />
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding DownloadImages}" Value="False">
<Setter Property="Background" Value="Blue"/>
<Setter Property="Content">
<Setter.Value>
<Image Style="{StaticResource ToggleOffImage}" />
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ToggleButton.Style>
遗憾的是它产生了以下结果:
这表明只有蓝色背景 setter 有效。 图像正确交换,只有 On 状态和 MouseOver 的背景保持 windows 风格的蓝色。
你知道我做错了什么吗?
在这种情况下,我不得不完全重写模板 属性,我建议大家这样做。始终自定义模板,即使您不想编辑任何内容。 xaml 一半的问题都可以解决。 并避免其他一堆代码错误:始终设置 ControlTemplate 的 TargetType。
代码:
<ToggleButton.Style>
<Style TargetType="{x:Type ToggleButton}">
<Setter Property="Template"/>
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid....>