在我的WPF应用程序中,我有一个DocumentViewers
列表,它们绑定到一个对象的某个属性。我将对象添加到ListBox并以编程方式应用一个datatemplate,它将对象的属性绑定到DocumentViewer。这意味着DocumentViewer根本没有在代码中声明,但我希望稍后更改属性。我怎样才能做到这一点?我的代码如下所示:
<DataTemplate x:Key="SomeDataTemplate" x:Name="DocumentViewerTempl">
<DocumentViewer x:Name="DocV" Document="{Binding DocumentContent}"
Style="{StaticResource DocumentViewerStyle1}"/>
</DataTemplate>
文档的内容位于DocumentContent
类的Document
属性中,如您所见,绑定发生在上面。我的问题是如何在代码中访问DocumentViewer?我试过给它一个名字并引用它,但这显然不是这样做的方法......
由于
答案 0 :(得分:2)
您可以通过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