【问题标题】:Expand specific item in treeview展开树视图中的特定项目
【发布时间】:2013-10-29 18:30:32
【问题描述】:

如何使用后面的代码扩展 TreeView 中现有的项目?例如,当我单击菜单时,我可以展开 TreeView 中的特定项目。

private void MenuItem_Click(object sender, RoutedEventArgs e)
    {
        // expand the 3rd item in my treeview
    }

XAML 中的代码:

<TreeView Height="525" HorizontalAlignment="Left" Margin="2,47,0,0" Name="treeView1" VerticalAlignment="Top" Width="168" FontFamily="Times New Roman" FontSize="12">
        <TreeViewItem Header="PL3 Line 1" IsExpanded="False">
            <TreeViewItem Selected="TreeViewItem_Selected">
                <TreeViewItem.Header>
                    <StackPanel Orientation="Horizontal">
                        <Image Source="/MonitoringSystemOfficeArea;component/Images/Computer.png" Height="22" Width="26"></Image>
                        <Label Content="Live Update" Width="70"></Label>
                    </StackPanel>
                </TreeViewItem.Header>
            </TreeViewItem>
            <TreeViewItem Selected="TreeViewItem_Selected_1">
                <TreeViewItem.Header>
                    <StackPanel Orientation="Horizontal">
                        <Image Source="/MonitoringSystemOfficeArea;component/Images/Calender.png" Height="24" Width="27"></Image>
                        <Label Content="Archives" Width="70"></Label>
                    </StackPanel>
                </TreeViewItem.Header>
            </TreeViewItem>
            <TreeViewItem Selected="TreeViewItem_Selected_100">
                <TreeViewItem.Header>
                    <StackPanel Orientation="Horizontal">
                        <Image Source="/MonitoringSystemOfficeArea;component/Images/Aha-Soft-Large-Calendar-Calendar.ico" Height="24" Width="27"></Image>
                        <Label Content="Archives / days" Width="88"></Label>
                    </StackPanel>
                </TreeViewItem.Header>
            </TreeViewItem>
        </TreeViewItem>
        <TreeViewItem Header="PL7 Line 2" IsExpanded="False">

……等等

【问题讨论】:

  • TreeViewItem 为此目的具有 IsExpanded 依赖属性。那是你的问题吗?如果不是,请改写。

标签: c# wpf treeview


【解决方案1】:

你可以使用ExpandSubtree方法(msdn):

TreeViewItem.ExpandSubtree 方法

扩展 TreeViewItem 控件及其所有子 TreeViewItem 元素。

private void MenuItem_Click(object sender, RoutedEventArgs e)
{
    // expand the 3rd item and all its child in treeview      
    TreeViewItem tvi = treeView1.Items[2] as TreeViewItem;
    if (tvi != null)
    {
        tvi.ExpandSubtree();
    }
}

如果您只想扩展主要项目,您应该使用 IsExpanded 属性 (msdn)。

private void MenuItem_Click(object sender, RoutedEventArgs e)
{
    // expand the 3rd item in treeview      
    TreeViewItem tvi = treeView1.Items[2] as TreeViewItem;
    if (tvi != null)
    {
        tvi.IsExpanded = true;
    }
}

如果要将项目集IsExpanded折叠为false:

private void MenuItem_Click(object sender, RoutedEventArgs e)
{
    // collapse the 3rd item in treeview      
    TreeViewItem tvi = treeView1.Items[2] as TreeViewItem;
    if (tvi != null)
    {
        tvi.IsExpanded = false;
    }
}

【讨论】:

  • 请注意, ExpandSubTree() 不仅扩展项目本身,还扩展所有智利项目(根据文档)。这可能是,也可能不是 OP 想要的......
  • @kmatyaszek 非常感谢它的工作,以及如何折叠特定的 iam?
  • @user2933082 如果你想折叠你应该设置IsExpanded为false:tvi.IsExpanded = false;
猜你喜欢
  • 1970-01-01
  • 2020-04-02
  • 2013-02-22
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多