哪个是多数据触发器而不是多重绑定的优势?

时间:2015-01-08 19:34:03

标签: c# wpf multibinding multidatatrigger

我希望在属性更改时,分析属性的值并设置文本块的文本。我有这个:

使用多重绑定:

<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>

我看到的主要区别是在多重绑定中我需要一个多值转换器。但是,使用多数据触发器,我需要设置所有组合以根据属性的值设置我想要显示的不同文本,因此这是一项非常艰苦的工作。

所以我怀疑多数据触发器的优势是什么,因为我需要设置多种组合,并且通过多重绑定我创建了一个转换器,它还允许复杂的比较,例如大于,小于......使用多数据触发每个组合只有一个值。

在sumary中,何时使用多重绑定和多数据触发?多重绑定的优点是什么?多数据触发器的优点是什么?

非常感谢。

1 个答案:

答案 0 :(得分:1)

MultiDataTrigger 的情况下,你在xaml中设置属性,并且由于你可以使用资源,数据绑定等,以便将属性的值设置为所需的值< em> MultiBinding (除非您在另一个绑定中发送资源并从参数中检索它或编写自定义转换器)。 例如:

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

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

如果两者都不存在,那么哪一个更有用的问题就会在Silverlight中消失。