2014-03-12 63 views
1

在我的wpf應用程序中,我有時會發現自己希望綁定到涉及兩個屬性的邏輯表達式的結果。例如說我有一類這樣的:綁定到涉及兩個屬性的邏輯

class A { 
    public bool A { get; set;} 
    public bool B { get; set;} 
} 

在我的XAML我要綁定的東西,取決於涉及A和B(例如,& & B的結果)的邏輯表達式。我意識到我可以創建一個屬性C,在該屬性中我存儲了此操作的結果,然後綁定到該屬性,但感覺是這樣做的錯誤方式。

有沒有其他方法可以做到這一點,建議?一直無法找到答案。

+0

嗨,AFAIK您必須爲此創建屬性C.我無法想象另一種方式。 –

+1

與[IMultiValueConverter](http://msdn.microsoft.com/en-us/library/system.windows.data.imultivalueconverter(v = vs.110).aspx)一起使用'MultiBinding'並讓轉換器執行你對兩個輸入綁定值進行邏輯運算? msdn文檔顯示了一個示例,您可以使用它來執行所需的操作並返回結果 – Viv

回答

0

我意識到我可以創建一個屬性C,在該屬性中我存儲了此操作的結果,然後綁定到該屬性,但感覺就像這樣做的錯誤方式。

有兩種主要方式可以達到你想要的效果,但都不是錯的。在某些情況下,PropertyC方法可能會更好,尤其是當您的邏輯表達式更復雜時。這實現起來更簡單,如果它是你的視圖模型,那麼它也可以被測試。

但是,另一種方法是將MultiBindingIMultiValueConverter結合使用,就像他們在評論中提到的@Viv一樣。以下是MSDN上鍊接的MultiBinding類頁面的示例:

<TextBlock Name="textBox2" DataContext="{StaticResource NameListData}"> 
    <TextBlock.Text> 
     <MultiBinding Converter="{StaticResource myNameConverter}" 
        ConverterParameter="FormatLastFirst"> 
      <Binding Path="FirstName"/> 
      <Binding Path="LastName"/> 
     </MultiBinding> 
    </TextBlock.Text> 
</TextBlock>