将触发值绑定到 属性
Bind trigger value to a property
我正在尝试设置一个触发器,这样如果两个值匹配发生颜色变化,当要匹配的东西是静态的并且可以直接放入 xaml 时,这很容易,但当东西不匹配时,这很容易要比较的是动态的,比如属性。基本上无论如何都可以将触发器的值绑定到 属性?
示例 - 错误表明值不能使用绑定。这让我认为价值必须是静态的。
<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
,如下例所示(TextBlock
命名为 txtBlock
颜色变化取决于值 "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>
解决方案适用于条件中使用的任何有限数据集。对于更复杂的条件(例如,条件块中使用的变量等),您可以在代码隐藏中实现值转换器和绑定,如示例所示:Binding in WPF DataTrigger value. Also, you may consider MultiDataTrigger
, or DataTrigger
with MultiBinding
(re: MultiDataTrigger vs DataTrigger with multibinding).
希望这可能有所帮助。
我正在尝试设置一个触发器,这样如果两个值匹配发生颜色变化,当要匹配的东西是静态的并且可以直接放入 xaml 时,这很容易,但当东西不匹配时,这很容易要比较的是动态的,比如属性。基本上无论如何都可以将触发器的值绑定到 属性?
示例 - 错误表明值不能使用绑定。这让我认为价值必须是静态的。
<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
,如下例所示(TextBlock
命名为 txtBlock
颜色变化取决于值 "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>
解决方案适用于条件中使用的任何有限数据集。对于更复杂的条件(例如,条件块中使用的变量等),您可以在代码隐藏中实现值转换器和绑定,如示例所示:Binding in WPF DataTrigger value. Also, you may consider MultiDataTrigger
, or DataTrigger
with MultiBinding
(re: MultiDataTrigger vs DataTrigger with multibinding).
希望这可能有所帮助。