【问题标题】:Which is the advange of muti data trigger instead of multibindig?多数据触发而不是多绑定的优势是什么?
【发布时间】:2015-03-07 00:59:28
【问题描述】:

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

多绑定:

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

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

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

总结一下,什么时候使用多绑定,什么时候触发多数据?多绑定和多数据触发器有哪些优势?

非常感谢。

【问题讨论】:

    标签: c# wpf multibinding multidatatrigger


    【解决方案1】:

    MultiDataTrigger 的情况下,您可以在 xaml 中设置属性,因此您可以使用资源、数据绑定等来将属性的值设置为所需的值,这在 MultiBinding (除非您在另一个绑定中发送资源并从参数中检索它或编写自定义转换器)。 示例:

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 2013-11-25
    • 1970-01-01
    • 2023-04-09
    • 2017-05-18
    • 2011-09-23
    相关资源
    最近更新 更多