以编程方式访问WPF中的数据模板控件
问题描述:
在我的WPF应用程序中,我有一个DocumentViewers
列表,它们绑定到某个对象的某个属性。我将该对象添加到ListBox并以编程方式应用将对象的属性绑定到DocumentViewer的数据模板。这意味着DocumentViewer在代码中完全没有声明,但我想在稍后改变属性。我怎样才能做到这一点?我的代码如下所示:以编程方式访问WPF中的数据模板控件
<DataTemplate x:Key="SomeDataTemplate" x:Name="DocumentViewerTempl">
<DocumentViewer x:Name="DocV" Document="{Binding DocumentContent}"
Style="{StaticResource DocumentViewerStyle1}"/>
</DataTemplate>
该文件的内容是在Document
类的DocumentContent
属性,所以你可以看到,在绑定将上述地方。我的问题是如何访问代码中的DocumentViewer?我试着给它一个名称,且引用该但这显然不是这样做的方式......
感谢
答
您可以通过ItemContainerGenerator
做到这一点:
var itemContainer =
listBox.ItemContainerGenerator.ContainerFromIndex(index) as ListBoxItem;
// or:
var itemContainer =
listBox.ItemContainerGenerator.ContainerFromItem(item) as ListBoxItem;
var viewer =
itemContainer.ContentTemplate.FindName("DocV", itemContainer) as DocumentViewer;
// Do stuff with viewer