Программный доступ к элементу управления датой в WPF - PullRequest
1 голос
/ 03 августа 2010

В моем приложении WPF у меня есть список DocumentViewers, который привязан к какому-либо свойству объекта.Я добавляю объект в ListBox и программно применяю табличку с данными, которая связывает свойство объекта с DocumentViewer.Это означает, что DocumentViewer вообще не объявлен в коде, но я хочу заставить его изменить свойство позже.Как я могу это сделать?Мой код выглядит следующим образом:

<DataTemplate x:Key="SomeDataTemplate" x:Name="DocumentViewerTempl">
    <DocumentViewer x:Name="DocV" Document="{Binding DocumentContent}"
                    Style="{StaticResource DocumentViewerStyle1}"/>
</DataTemplate>

Содержимое документа находится в свойстве DocumentContent класса Document, поэтому, как вы можете видеть, привязка происходит выше.Мой вопрос, как получить доступ к DocumentViewer в коде?Я пытался дать ему имя и сослаться на него, но это явно не способ сделать это ...

Спасибо

1 Ответ

2 голосов
/ 14 июня 2011

Вы можете сделать это через 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
...