2008-12-05 127 views
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

相关问题