2

我有一個<ItemsControl>與自定義<DataTemplate>(也是一個自定義<ItemsPanelTemplate>,這只是一個WrapPanel),通過ItemsSource綁定到一個簡單的可觀察的字符串集合。如何從數據綁定ItemsControl中獲取模板化項目的實例? (WPF)

DataTemplate僅由一個自定義UserControl的實例組成,該實例的屬性通過{Binding}綁定到該字符串。

問題是因爲我的數據項目只是字符串,我需要直接以編程方式訪問我的UserControl的實例,但我似乎無法弄清楚如何!

我已經試過:

var item = tagBar.Items[ tagBar.Items.Count - 1 ]; 

...但是,剛剛返回的字符串。另外:

var item2 = tagBar.ItemContainerGenerator.ContainerFromIndex(tagBar.Items.Count - 1); 

...返回ContentPresenter,我無法弄清楚如何處理ContentPresenter做的就是我的UserControl的實例。

??

這與this question類似,但它從來沒有得到正確回答,並且也是特定於Silverlight,而這是WPF。

+0

在有人指出它之前,item2.Content也會返回字符串。 *嘆息* – devios1 2008-12-05 03:37:54

回答

2

我發佈的答案over here涉及將一個元素聚焦到DataTemplate中,但它應該提供您需要的代碼。它涉及到在您的DataTemplate上使用FindName方法來查找其中的控件。如果你給你的UserControl一個名字,你應該是對的。

+0

優秀的,這樣做!關鍵是將`item`(或者說我的上面代碼中的`item2`)傳遞迴`tagBar.ItemTemplate.FindName()`(當然,給UserControl一個名字)。 我也會小心IsLoaded位,雖然這是有點跛腳,它是需要的。 謝謝! – devios1 2008-12-05 03:50:31

相關問題