我正在尝试在ToggleButton
上使用自定义皮肤。这是我的ToggleButton
:
<ToggleButton Template="{StaticResource OnTemplate}" IsChecked="True" >
<ToggleButton.Style>
<Style TargetType="ToggleButton">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsChecked}" Value="True">
<Setter Property="Template" Value="{StaticResource OnTemplate}" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsChecked}" Value="False">
<Setter Property="Template" Value="{StaticResource OffTemplate}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ToggleButton.Style>
</ToggleButton>
以下是两个模板:
<ControlTemplate x:Key="OnTemplate">
<Grid>
<Image Source="ToggleOn.png" />
<TextBlock>On</TextBlock>
</Grid>
</ControlTemplate>
<ControlTemplate x:Key="OffTemplate">
<Grid>
<Image Source="ToggleOff.png" />
<TextBlock>Off</TextBlock>
</Grid>
</ControlTemplate>
这似乎不起作用。我做错了什么?
答案 0 :(得分:1)
尝试从按钮定义中删除Template="{StaticResource OnTemplate}"
。本地值超过触发器/样式设置器的值。
此外,您需要使用常规Trigger
代替DataTrigger
,否则您需要在RelativeSource={RelativeSource Self}
绑定上设置DataTrigger
。我推荐前者。