多数据触发而不是多绑定的优势是什么?

Which is the advange of muti data trigger instead of multibindig?

我希望当属性发生变化时,分析属性的值并设置文本块的文本。我有这个:

多重绑定:

<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 中设置了 属性,因此您可以使用资源、数据绑定等来设置 属性 的值达到所需值,这在 MultiBinding 中是不可能的(除非您在另一个绑定中发送资源并从参数中检索它或编写自定义转换器)。 示例:

 <Setter Property="Text" Value="{StaticResource YourResource}" />

通过使用Converter,无论是Binding还是MultiBinding,都可以通过在Convert或ConvertBack方法中插入断点来跟踪数据,直接在 xaml 中是不可能的。

在 Silverlight 中,您对哪一个更有用的担忧消失了,因为两者都不存在。