我希望当属性更改时,分析属性的值并设置文本块的文本。我有这个:
使用多重绑定:
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource MyMultivalueConverter}">
<Binding />
<Binding Path="AnotherProperty"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
使用多数据触发器:
<TextBlock HorizontalAlignment="Center" Margin="0,20,0,0" FontSize="28">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=." Value="0" />
<Condition Binding="{Binding Path=AnotherProperty}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="Text" Value="Mytext" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
我看到的主要区别是,在多重绑定中,我需要一个多值转换器。但是,使用多数据触发器,我需要设置所有组合以根据属性的值设置要显示的不同文本,因此这是一项非常艰苦的工作。
所以我的疑问是哪个是多数据触发器的优势,因为我需要设置许多组合,并且通过多重绑定,我创建了一个转换器,该转换器还允许复杂的比较,例如大于、小于......对于多数据,每个组合仅触发一个值。
总之,何时使用多绑定,何时触发多数据?多重绑定的优点和多数据触发的优点是什么?
非常感谢。
在 MultiDataTrigger 的情况下,您可以在 xaml 中设置属性,因此您可以使用资源、数据绑定等来将属性的值设置为所需的值,这在多重绑定中是不可能的(除非您在另一个绑定中发送资源并从参数中检索它或编写自定义转换器)。例:
<Setter Property="Text" Value="{StaticResource YourResource}" />
通过使用转换器,无论是从绑定还是多重绑定,都可以通过在转换或转换方法中插入断点来跟踪数据,这在 xaml 中直接是不可能的。
你担心哪一个更有用在 Silverlight 中消失了,因为两者都不存在。