Я хочу создать MultiDataTrigger. В одном из условий мне нужно использовать конвертер. Поскольку он используется только там, я не хочу определять конвертер в качестве ресурса, но использовать его только локально.Использовать IValueConverter локально внутри 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» Условие «unterstützt keine direkten Inhalte.»)
Есть ли способ заставить MultiDataTrigger работать без необходимости определять преобразователь в качестве ресурса?