基于元素状态的WPF数据触发器:根据按钮状态修改Tooltip
完全通过XAML实现按钮启用/禁用状态对应的Tooltip切换
可以直接通过XAML的Trigger监听按钮自身的IsEnabled属性来实现,不需要依赖ViewModel的额外属性。因为按钮绑定Command后,IsEnabled会自动同步Command的CanExecute状态,所以直接基于这个属性做触发即可。
修改后的完整XAML代码如下:
<Button Name="OkButton" VerticalAlignment="Center" Command="{Binding Path=OkCommand}" CommandParameter="{Binding}" Click="OkButtonClick" Content="OK"> <Button.Style> <Style TargetType="{x:Type Button}"> <Setter Property="ToolTipService.ShowOnDisabled" Value="True" /> <Setter Property="ToolTip" Value="OK" /> <Style.Triggers> <!-- 监听按钮自身的IsEnabled属性,禁用时切换Tooltip --> <Trigger Property="IsEnabled" Value="False"> <Setter Property="ToolTip" Value="OK Disabled" /> </Trigger> </Style.Triggers> </Style> </Button.Style> </Button>
关键说明:
- 用
Trigger替代原来的DataTrigger,因为我们监听的是按钮自身的依赖属性IsEnabled,而非外部数据 ToolTipService.ShowOnDisabled="True"是必须的,它保证按钮处于禁用状态时依然能显示Tooltip- 按钮的
IsEnabled会自动和绑定的OkCommand的CanExecute结果同步,无需额外配置
内容的提问来源于stack exchange,提问作者John Ingram
相关产品推荐
相关产品推荐

