2013-08-28 55 views
1


如果有人能向我解釋依賴屬性DisplayMemberPath的工作原理, 我想創建具有像ComboBox的DisplayMemberPath屬性的Custom ItemsControl,在設置ItemsSource之後我想要能夠指定要顯示的屬性。
目前,如果我這樣做財產以後這樣的:DisplayMemberPath行爲

<cc:MyControl ... DisplayMemberPath="MyObjectDescription" ... > 

(是的,我已經覆蓋了的DisplayMemberPath,其除了點)。

它顯示項目列表,但它們分別顯示「MyObjectDescription」,而不是該屬性爲ItemsSource中的每個對象保留的值。 我相信它是因爲我錯過了DisplayMemberPath屬性的工作方式。
謝謝大家。 :)

+0

你的控件繼承什麼類? 您可以如何實現DisplayMemberPath的一種可能性是,您在控件的代碼後面創建一個DataTemplate,並將其分配給ItemsControl的ItemTemplate。 而且例如包含在模板中的文本框綁定到給定的DisplayMemberPath。 – Mike1991

回答

4

DisplayMemberPath有兩種類型。一個支持綁定,另一個你必須設置一個字符串值。在你的情況下,我可以看到你想實施第二個。爲此,請在您的字符串類型的自定義控件內創建一個屬性,並將其命名爲DisplayMemberPath。用您的自定義邏輯覆蓋容器中的方法OnInitialized,您可以通過將綁定的路徑更改爲DisplayMemeberPath中指定的字符串值來操作綁定到DataContext的路徑。 WPF調用OnInitalized後,一旦任何控件完全未初始化,但在其即將呈現之前。我希望這能幫助你做更多。

0

我假設你的控件像MyControlMyControlItem像ListBox和ListBoxItem。 當創建MyControlItem並使用它從DataContext獲取數據時,您可以訪問MyControl的DisplayMemberPath。

相關問題