Доступ к UIElement в TreeViewItem, который был изменен с помощью HierachicalDataTemplate - PullRequest
0 голосов
/ 19 января 2012

мое приложение Silverlight 4 содержит древовидную структуру.Я настроил внешний вид TreeViewItems с помощью HierarchicalDataTemplate:

<sdk:TreeView x:Name="TreeViewModel" ItemTemplate="{StaticResource DataTemplateTreeViewDisplayObjects}" .../>

<sdk:HierarchicalDataTemplate x:Key="DataTemplateTreeViewDisplayObjects" ItemsSource="{Binding Children}">
  <Grid>
    <Border x:Name="BorderComponent" .../>
  </Grid>
</sdk:HierarchicalDataTemplate>

В конце концов мне нужно проанализировать все TreeViewItems и получить доступ к UIElement (то есть «BorderComponent»).Примерно так:

foreach (TreeViewItem tvi in _myTreeView.Items)
  tvi.BorderComponent.Visibility = Visibility.Collapsed

Очевидно, это не сработает, потому что Items вернет связанный объект.И даже если бы я мог получить доступ к TreeViewItem (_myTreeView.ItemContainerGenerator.ContainerFromIndex (0) как TreeViewItem, чтобы получить первый), я не знаю, как получить доступ к границе, потому что TreeViewItem не знает о HierarchicalDataTemplate, то естьиспользуется для создания элементов.

Есть идеи, как мне получить доступ к элементу "BorderComponent" в каждом TreeViewItem?

Заранее спасибо,
Франк

1 Ответ

0 голосов
/ 19 января 2012

Вам следует избегать прямого доступа к UI-компонентам, вы можете просто связать Visibility со свойством вашего элемента и установить для него Collapsed.

Чтобы на самом деле получить доступ к Border, вы, вероятно, тоже можете сделать это, шаблон данных, который его создает, должен быть найден в чем-то вроде HeaderTemplate из TreeViewItem, хотя я не использовал Toolkit, хотя не могу сказать вам наверняка. Используя FindName в шаблоне, вы можете получить Border затем.

...