AutoExpand treeview в WPF

Я просто пошел бы прямо для рефакторинга в меньшие методы. Если метод является достаточно большим, что ему нужно разбивание как это, ему действительно нужно разбивание в несколько методов если во всем возможный.

При ограничении объема хорошо, это не действительно, для чего именованные блоки. Это неидиоматично, который является очень редко хорошей вещью.

44
задан Dave Clemmer 18 August 2011 в 01:11
поделиться

2 ответа

Вы можете установить ItemContainerStyle и использовать свойство IsExpanded.

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
   <Grid>
      <TreeView>
         <TreeView.ItemContainerStyle>
            <Style TargetType="{x:Type TreeViewItem}">
               <Setter Property="IsExpanded" Value="True"/>
            </Style>
         </TreeView.ItemContainerStyle>
         <TreeViewItem Header="Header 1">
            <TreeViewItem Header="Sub Item 1"/>
         </TreeViewItem>
         <TreeViewItem Header="Header 2">
            <TreeViewItem Header="Sub Item 2"/>
         </TreeViewItem>
      </TreeView>
   </Grid>
</Page>

Если вам нужно сделать это из кода, вы можете написать модель представления для элементов представления в виде дерева и привязать свойство IsExpanded к соответствующему объекту из модели. Дополнительные примеры см. В замечательной статье Джоша Смита о CodeProject: Упрощение WPF TreeView с помощью шаблона ViewModel

69
ответ дан 26 November 2019 в 22:07
поделиться

Вот что я использую:

private void ExpandAllNodes(TreeViewItem rootItem)
{
    foreach (object item in rootItem.Items)
    {
        TreeViewItem treeItem = (TreeViewItem)item;

        if (treeItem != null)
        {
            ExpandAllNodes(treeItem);
            treeItem.IsExpanded = true;
        }
    }
}

Чтобы он работал, вы должны вызвать этот метод в цикле foreach для корневого узла:

// this loop expands all nodes
foreach (object item in myTreeView.Items)
{
    TreeViewItem treeItem = (TreeViewItem)item;

    if (treeItem != null)
    {
        ExpandAllNodes(treeItem);
        treeItem.IsExpanded = true;
    }
}
5
ответ дан 26 November 2019 в 22:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: