2011-10-13 52 views
2

我搜索了四周,但不認爲我真的找到了答案。我試圖更多地處理數據綁定,並開始看到事物聚集在一起。你可以做的數據,如果是這樣,wpf數據綁定以啓用基於多個條件的控制

前如何......,結合類似基於兩個屬性「的IsEnabled」:一個窗口有一定的控制......某些控件可能會或可能不會在特定的時間啓用。有時候,就像數據可用時一樣簡單(例如找到要編輯的記錄),或者添加...我會認爲這是窗口的「編輯」模式。有時候,某些控件僅在執行編輯時可用,並且用戶具有管理權限。

BOTH條件需要被「啓用」的控制是真實的。同樣可以應用於類似條件下的控件的可視性。

回答

3

如果您使用的MVVM模型(你真的不應該,如果你正在做WPF開發),那麼你想了錯誤的方式。

這類邏輯的所屬的視圖模型。您應該在ViewModel上擁有一個代表控件(或控件)可見性的屬性,並在ViewModel中具有所需的任何邏輯(權限,數據有效性,模式等)來確定此值。將邏輯放在視圖hamstrings上並違反SOC。

視圖模型應該模型視圖。也就是說,在你的視圖中元素和概念之間(大多數情況下)應該是1:1的相關性(例如,是否啓用了功能或可見)以及ViewModel上的屬性。

+0

我明白將MODEL與視圖分開的原則/實際原因,但是想要應用背後的原因/原因。現在對於另一個屬性來說很有意義,它根據需要查看無論多少條件。感謝您澄清我認爲最好的方法。 – DRapp

0

您可以使用MultiBindings和一些自定義聚合多值轉換器,以聲明的方式實現這一目標。或者,它可能更明確(因此推薦)在您的視圖模型上放置一個附加屬性,該屬性將其他視圖模型屬性的值組合起來。