2010-08-02 106 views
1

在我的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?我试着给它一个名称,且引用该但这显然不是这样做的方式......

感谢

回答

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 
相关问题