gpt4 book ai didi

c# - 将触发器值绑定(bind)到属性

转载 作者:太空狗 更新时间:2023-10-30 01:34:27 24 4
gpt4 key购买 nike

我正在尝试设置一个触发器,以便如果两个值匹配发生颜色变化,当要匹配的事物是静态的并且可以直接放入 xaml 中时这很容易,但是当要比较的事物是动态的时,这很容易,比如属性(property)。基本上有没有办法将触发器的值绑定(bind)到属性?

示例 - 错误表示值不能使用绑定(bind)。这让我认为值(value)必须是静态的。

<TextBlock Name="MyTextBlock" Text="{Binding someProp}">
<TextBlock.Resources>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=MyTextBlock, Path=Text}" Value="{Binding someOtherProperty}">
Do some stuff here
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Resources>
</Textblock>

编辑:将其更新为数据触发器,但问题仍然存在。

最佳答案

为此,您可以使用 DataTriggers,如下例所示(名为 txtBlockTextBlock 颜色变化取决于值“R”或“N”):

<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=txtBlock,Path=Text}" Value="R">
<Setter Property="Background" Value="#f9f9f9" />
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=txtBlock,Path=Text}" Value="N">
<Setter Property="Background" Value="Yellow" />
<Setter Property="Foreground" Value="Black" />
</DataTrigger>
</Style.Triggers>

解决方案适用于条件中使用的任何有限数据集。对于更复杂的条件(例如,条件 block 中使用的变量等),您可以在代码隐藏中实现值转换器和绑定(bind),如示例所示:Binding in WPF DataTrigger value .此外,您可以考虑使用 MultiDataTriggerDataTriggerMultiBinding(回复:MultiDataTrigger vs DataTrigger with multibinding)。

希望这可能有所帮助。

关于c# - 将触发器值绑定(bind)到属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30651569/

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