【发布时间】:2010-11-04 17:11:24
【问题描述】:
如何在样式(或其他方法)中使用属性触发器来更改已通过绑定定义其值的属性(例如工具提示)?
我有一个像这样的简单按钮:
<Button Name="Button1" Style="{StaticResource ButtonStyle}"
ToolTip="{Binding Name}" >My Button</Button>
它在工具提示上有一个绑定,将类的 Name 属性显示为 DataContext。
我的问题是我想在启用按钮时显示名称,但在禁用按钮时显示其他内容。我想我可以用这样的样式和触发器来解决我的问题:
<Style TargetType="Button" x:Key="ButtonStyle">
<Setter Property="ToolTipService.ShowOnDisabled" Value="True" />
<Style.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="ToolTip" Value="Disabled" />
</Trigger>
</Style.Triggers>
</Style>
但这不起作用。如果我从按钮中删除了工具提示绑定,那么当按钮被禁用时,我会得到正确的工具提示。但似乎我不能在同一个属性上同时拥有绑定和触发器。
我可以通过像这样添加另一个触发器来解决它:
<Trigger Property="IsEnabled" Value="true">
<Setter Property="ToolTip" Value="{Binding Name}" />
</Trigger>
但我想为 4 或 5 个按钮使用该样式,它们对启用的 ToolTip 都有不同的绑定,但在禁用时使用相同(固定)的工具提示。
有什么建议吗?
【问题讨论】:
标签: wpf data-binding triggers