2016-10-10 24 views
0

Я хочу создать 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 работать без необходимости определять преобразователь в качестве ресурса?

ответ

2

Ваш 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>