Ben*_*sen 0 wpf triggers button
什么是实现三态按钮的惯用(最好是最简单)方式,其中状态为:
到目前为止我有这个:
<Button ToolTip="Back" FontWeight="Bold" Command="{Binding Path=Navigator.GoBackCommand}" IsEnabled="{Binding Path=Navigator.CanGoBack}">
<Viewbox Width="10">
<ContentControl Content="{StaticResource ResourceKey=CoolLeftArrow}"/>
</Viewbox>
</Button>
Run Code Online (Sandbox Code Playgroud)
是否有必要更换控件模板以获取此类行为,还是可以使用触发器?理想情况下,我只想指定3个不同的资源并将它们绑定到相关属性.
编辑:更新名称"按下"状态为"按"以避免与可能的类似复选框的行为混淆.
为什么不使用IsThreeState设置为的ToggleButton true?
<ToggleButton IsThreeState="True">
<ToggleButton.Style>
<Style TargetType="ToggleButton">
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Content" Value="{StaticResource TbCheckedContent}"/>
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Content" Value="{StaticResource TbUncheckedContent}"/>
</Trigger>
<Trigger Property="IsChecked" Value="{x:Null}">
<Setter Property="Content" Value="{StaticResource TbNullContent}"/>
</Trigger>
</Style.Triggers>
</Style>
</ToggleButton.Style>
</ToggleButton>
Run Code Online (Sandbox Code Playgroud)
更新我想我还没有仔细阅读你的问题.您当然可以为Button IsPressed和IsEnabled属性执行类似于上面的操作:
<Button>
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Content" Value="{StaticResource ButtonPressedContent}"/>
</Trigger>
<Trigger Property="IsPressed" Value="False">
<Setter Property="Content" Value="{StaticResource ButtonNormalContent}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Content" Value="{StaticResource ButtonDisabledContent}"/>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Run Code Online (Sandbox Code Playgroud)
但是,您可以查看VisualStates,然后查看Button样式和模板,以了解如何在Button的ControlTemplate中可视化这些状态.