2016-10-10 15 views
0

MultiDataTrigger를 만들고 싶습니다. 조건 중 하나에서 변환기를 사용해야합니다. 그곳에 만 사용되기 때문에 변환기를 리소스로 정의하고 싶지는 않지만 로컬에서만 사용합니다. (https://stackoverflow.com/a/2304330/5333340 기준)MultiDataTrigger 내부에서 IValueConverter를 로컬로 사용하십시오.

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

및 리소스로 변환기를 형성 피하기 위해이 바인딩 :

그래서이 MultiDataTrigger 만든

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

하지만 컴파일러는 "유형 '조건'이 지원하지 않습니다. 직접적인 콘텐츠. " (원본 : "조건"을 입력하십시오.)

자원을 변환기로 정의 할 필요없이 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>