2010-07-12 65 views
0

我有一個通過數據綁定創建的項目的列表框。項目模板爲每個生成的項目創建一個自定義視圖。每個生成的項目視圖都是它自己的用戶控件。如何根據容器狀態更改容器項目的狀態(WPF/XAML)

我想將列表框的狀態更改爲「詳細信息」與「壓縮」之類的內容,並讓每個項目自動更改其狀態。視圖項目根據其狀態知道要顯示或隱藏的內容。我似乎無法從更高級別(用於更改視圖模式的按鈕)更改生成的用戶控件的狀態。

我希望這已經夠清楚了。如果有幫助,我會添加詳細信息。

非常感謝您的幫助!

+0

感謝您的快速響應!對不起,我應該更清楚了。我特別需要在生成的用戶控件上執行更改狀態,而不僅僅是設置屬性值。我想聲明一個事件觸發器,所以源是一個被點擊的按鈕,然後在用戶控件上使用一個ChangeStateAction(我希望每件事都聲明)。該按鈕位於ListBox級別,因此一個簡單的祖先綁定將無法找到它。實際上,它並沒有使用戶控件的屬性匹配另一個控件的屬性值 - 它觸發了一個基於某個按鈕的點擊事件的狀態更改。 – 2010-07-12 22:28:24

回答

1

在生成的控件中設置一個數據觸發器,該控件綁定到父項的相對屬性。有關使用RelativeSource的更多信息here - 您正在尋找祖先選項,這將成爲您提到的父列表框。

比方說你暴露ViewType屬性在列表框,然後像

{Binding Path=ViewType, RelativeSource={RelativeSource AncestorType={x:Type ListBox}}} 

應該工作。

0

您可以設置

MyValue = "{Binding Path=SelectedItem.CustomProperty, Converter=CustomPropertyConverter}" 

這將走在對象鏈了你選擇的項目。

FindAncestor爬上鍊條。