gpt4 book ai didi

wpf - 使用属性触发器更改已绑定(bind)的属性

转载 作者:行者123 更新时间:2023-12-01 12:01:22 31 4
gpt4 key购买 nike

如何在样式(或其他方法)中使用属性触发器来更改已通过绑定(bind)定义其值的属性(例如工具提示)?

我有一个像这样的简单按钮:

<Button Name="Button1" Style="{StaticResource ButtonStyle}" 
ToolTip="{Binding Name}" >My Button</Button>

它在工具提示上有一个绑定(bind),以显示设置为 DataContext 的类的 Name 属性。

我的问题是我想在启用按钮时显示名称,但在禁用按钮时显示其他内容。我想我可以用这样的风格和触发器来解决我的问题:
<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>

但这不起作用。如果我从按钮中删除了工具提示绑定(bind),那么当按钮被禁用时,我会得到正确的工具提示。但似乎我不能在同一个属性上同时拥有绑定(bind)和触发器。

我可以通过添加另一个触发器来解决它,如下所示:
<Trigger Property="IsEnabled" Value="true">
<Setter Property="ToolTip" Value="{Binding Name}" />
</Trigger>

但我想为 4 或 5 个按钮使用该样式,这些按钮对启用的 ToolTip 都有不同的绑定(bind),但在禁用时使用相同的(固定)工具提示。

有什么建议么?

最佳答案

解决问题的最简单方法是创建所有按钮都可以使用的按钮样式(以下示例中的 _DisabledButtonToolTipStyle),然后为每个应用启用的工具提示值的按钮定义唯一样式。如果各个按钮总是有不同的工具提示值,那么我建议简单地嵌入如下样式;但是,如果您想重用启用的工具提示样式,您可以轻松地在资源中定义它并给它一个键。

<Window.Resources>
<Style x:Key="_DisabledButtonToolTipStyle" TargetType="Button">
<Setter Property="ToolTipService.ShowOnDisabled" Value="True" />
<Style.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="ToolTip" Value="Disabled" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>

<Grid>
<Button Name="Button1" Content="My Button">
<Button.Style>
<Style TargetType="Button" BasedOn="{StaticResource _DisabledButtonToolTipStyle}">
<Setter Property="ToolTip" Value="{Binding Name}" />
</Style>
</Button.Style>
</Button>
</Grid>

关于wpf - 使用属性触发器更改已绑定(bind)的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1024760/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com