2010-08-02 100 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 
相關問題