WPF C # Получить корневой узел TreeView - PullRequest
1 голос
/ 18 августа 2010

У меня есть TreeView, который связан через HierarchicalDataTemplate

        <HierarchicalDataTemplate x:Key="HierachrTree" DataType="{x:Type src:Ordner}" ItemsSource="{Binding UnterOrdner}">
                <TextBlock Text="{Binding OrdnerName}"/>
    </HierarchicalDataTemplate>

Вот мой TreeView:

<TreeView Name="DokumentBrowser" ItemTemplate="{StaticResource HierachrTree}"

Теперь я хочу получить первый узел и установить для свойства IsExpanded значение false.

Я попробовал это так

        ItemCollection ic = DokumentBrowser.Items;
        TreeViewItem tvi = (TreeViewItem)ic.GetItemAt(0);
        tvi.IsExpanded = false;

но я не могу привести объект обратно к TreeViewItem, чтобы получить свойство IsExpanded.

1 Ответ

6 голосов
/ 18 августа 2010

TreeView.Items - это коллекция объектов данных, а не TreeViewItems. Вы можете использовать ItemContainerGenerator , чтобы получить сопоставление от объектов данных к TreeViewItems, которые являются контейнерами.

TreeViewItem tvi =
    (TreeViewItem) DokumentBrowser.ItemContainerGenerator.ContainerFromIndex(0);

Если вы начинаете с объекта данных вместо индекса, тогда вы можете использовать ContainerFromItem:

TreeViewItem tvi =
    (TreeViewItem) DokumentBrowser.ItemContainerGenerator.ContainerFromItem(
        DokumentBrowser.Items.GetItemAt(0));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...