2011-11-22 31 views
0

我在xaml中有這個構造。帶有datatrigger訪問每個元素值的樣式資源

<Type1 visibility={binding bool1, converter=BoolToVisibilityConverter}/> 
<Type1 visibility={binding bool2, converter=BoolToVisibilityConverter}/> 
<Type1 visibility={binding bool3, converter=BoolToVisibilityConverter}/> 
<Type1 visibility={binding bool4, converter=BoolToVisibilityConverter}/> 

但是,用戶希望看到布爾值爲false的項目,但處於禁用狀態。因此,我希望bool1,bool2等以一種風格提供數據觸發器。

但是,「bool1」,「bool2」文本現在每個Type1元素都是顯式的(它們綁定到視圖模型,Type1也具有其他視圖模型的綁定,所以我不想讓它成爲一個listview或任何改變每個元素的datacontext。

我如何做一個樣式資源其datatrigger(或觸發器)可以訪問每件定義界值嗎?我在本地綁定每個元素對一些佔位元素屬性然後在風格中使用元素觸發器?

回答

2

如果bools應該實現y與可見度無關,爲什麼不直接綁定到IsEnabled?如果你想綁定到對象的值,你可以使用RelativeSource綁定Mode=Self

+0

有問題的元素是擴展元素。即使他們對他們有一種不活躍的「感覺」,但我不知道擴展功能本身應該被禁用。 是的,Mode = Self的RelativeSource是我在提出一個「佔位符」值的時候想到的,這個值將被樣式中的元素觸發器訪問。但是有沒有適合這個的依賴屬性? 「IsEnabled」會以某種可能或可能不需要的方式影響控件的功能。 – Tormod

+1

@Tormod:如果您尚未將該標記用於其他任何內容,您可以使用標記作爲佔位符,或者可以創建[附加屬性](http://msdn.microsoft.com/zh-cn/library/ms749011的.aspx) –