【问题标题】:Use IValueConverter locally inside MultiDataTrigger在 MultiDataTrigger 中本地使用 IValueConverter
【发布时间】:2017-02-18 19:46:54
【问题描述】:

我想创建一个 MultiDataTrigger。在其中一种情况下,我需要使用转换器。由于它只在那里使用,我不想将转换器定义为资源而只在本地使用它。

所以我制作了这个 MultiDataTrigger:

<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
        <Condition Binding="Property1" Value="Value1" />
        <Condition ... />
    </MultiDataTrigger.Conditions>
    <Setter Property="SomeProp" Value="SomeVal"/>
</MultiDataTrigger>

这个绑定避免将转换器定义为资源(​​基于https://stackoverflow.com/a/2304330/5333340):

<Binding Path="Property2">
    <Binding.Converter>
        <converterNamespace:MyConverter/>
    </Binding.Converter>
</Binding>

把这两部分放在一起:

<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
        <Condition Binding="Property1" Value="Value1" />
        <Condition Value="Value2">
            <Binding Path="Property2">                 <!-- Compiler -->
                <Binding.Converter>                    <!-- does     -->
                    <converterNamespace:MyConverter/>  <!-- not      -->
                </Binding.Converter>                   <!-- like     -->
            </Binding>                                 <!-- this!    -->
        </Condition>
    </MultiDataTrigger.Conditions>
    <Setter Property="SomeProp" Value="SomeVal"/>
</MultiDataTrigger>

但编译器抱怨:“类型'条件'不支持直接内容。” (原文:“Der Typ 'Condition' unterstützt keine direkten Inhalte.”)

有没有办法让 MultiDataTrigger 工作而无需将转换器定义为资源?

【问题讨论】:

    标签: wpf data-binding ivalueconverter multidatatrigger


    【解决方案1】:

    您的 XAML 缺少 &lt;Condition.Binding&gt; 标记。除此之外,Binding="{Property1}" 也是无效的。

    <MultiDataTrigger>
        <MultiDataTrigger.Conditions>
            <Condition Binding="{Binding Property1}" Value="Value1" />
            <Condition Value="Value2">
                <Condition.Binding>                   <!-- here -->
                    <Binding Path="Property2">
                        <Binding.Converter>
                            <converterNamespace:MyConverter/>
                        </Binding.Converter>
                    </Binding>
                </Condition.Binding>
            </Condition>
        </MultiDataTrigger.Conditions>
    </MultiDataTrigger>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-07
      • 2016-06-01
      • 1970-01-01
      • 2013-11-15
      • 2012-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多