2010-02-24 78 views
3

我目前正在學習WPF以及使用MultiTrigger和Conditions設置樣式化控件的某些屬性。我知道MultiTrigger的條件必須全部滿足(AND運算符)才能設置Setter指定的值。否定條件元素MultiTrigger

但是,如果不符合值,是否存在條件(讓我們將其命名爲NotCondition)。我有一個小例子來說明我的意思。

如果鼠標在控制的背景屬性應該設置爲「紅」和內容是的「Hello World」。 另一種情況是,如果鼠標在和內容的「Hello World」,背景應該是「藍」

<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-Element或Attribute來否定比較?

回答

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 。