我想创建一个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>但是编译器抱怨道:"Type‘content’不支持直接内容。“(原文:"Der Typ‘Inhalte’unterstützt keine direkten Inhalte.")
有没有一种不需要将转换器定义为资源而使MultiDataTrigger工作的方法?
发布于 2016-10-10 12:29:40
您的XAML缺少<Condition.Binding>标记。除此之外,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>https://stackoverflow.com/questions/39957413
复制相似问题