2010-02-24 3 views
3

현재 WPF와 MultiTrigger 및 Conditions를 사용하여 스타일이 적용된 컨트롤의 일부 속성을 설정하고 있습니다. Setter가 지정한 값을 설정하려면 MultiTrigger의 조건이 모두 충족되어야합니다 (AND 연산자).MultiTrigger에 대한 부정 또는 조건 요소 없음

값이 충족되지 않으면 조건이 존재합니다 (이름을 NotCondition으로 지정). 나는 내가 의미하는 것을 설명 할 수있는 작은 예를 가지고있다.

는 백그라운드-재산권은 '안녕하세요'을 마우스 컨트롤이를 초과하면'레드'로 설정하고, 내용이 입니다해야합니다. 마우스 이상이고 내용이'안녕하세요'가, 배경 '블루'해야하지 경우 다른 경우이다.

<MultiTrigger> 
    <MultiTrigger.Conditions> 
    <Condition Property="IsMouseOver" Value="True" /> 
    <Condition Property="Content" Value="Hello World" /> 
    </MultiTrigger.Conditions> 
    <Setter Property="Background" Value="Red"/> 
</MultiTrigger> 
<MultiTrigger> 
    <MultiTrigger.Conditions> 
    <Condition Property="IsMouseOver" Value="True" /> 
    <!--<NotCondition Property="Content" Value="Hello World" />--> 
    </MultiTrigger.Conditions> 
    <Setter Property="Background" Value="Blue"/> 
</MultiTrigger> 

어떻게 WPF/XAML에서이 같은 것을 보관할 수 있습니까? 비교를 무효화하기 위해 조건 요소에 NotCondition 요소 또는 속성이 있습니까?

답변

4

색상이있는이 특별한 경우에는 트리거 우선 순위를 사용할 수 있습니다. 예 : 두 마우스가 끝나고 텍스트 안녕하세요 세계

<Trigger Property="IsMouseOver" Value="True"> 
    <Setter Property="Background" Value="Blue"/> 
</Trigger> 
<MultiTrigger> 
<MultiTrigger.Conditions> 
    <Condition Property="IsMouseOver" Value="True"/> 
    <Condition Property="Text" Value="Hello world"/> 
</MultiTrigger.Conditions> 
<Setter Property="Background" Value="Red"/> 
</MultiTrigger> 

최신 트리거는 첫 번째 트리거에서 효과를 무시합니다.

이 있습니다 WPF에서 아무것도 빌드에 있습니다 당신은 조건 트리거, 하지만 마이크 Hillberg이 문제에 대한 하나 개의 매우 interseting 솔루션을 제안했다 수행 A Comparable DataTrigger

희망이 도움이,

건배, Anvaka을 .