zoukankan      html  css  js  c++  java
  • WPF中TreeView单击展开其子元素以及点击一个元素展开其他元素收起

    TreeView单击展开其子元素:

    在WPF的TreeView控件中,要想展开它的子元素,我们必须要鼠标左键点两下或者右键点一下,那么我们怎样实现左键点一下就使它展开呢?

    Xaml:

    <Grid>
            <TreeView HorizontalAlignment="Left" Height="208" Margin="243,35,0,0" VerticalAlignment="Top" Width="150">
                <TreeViewItem Header="AAA" Selected="TreeViewItem_Selected">
                    <TreeViewItem Header="aaa"/>
                    <TreeViewItem Header="bbb"/>
                    <TreeViewItem Header="ccc"/>
                </TreeViewItem>
                <TreeViewItem Header="BBB" Selected="TreeViewItem_Selected_1">
                    <TreeViewItem Header="aaa"/>
                    <TreeViewItem Header="bbb"/>
                    <TreeViewItem Header="ccc"/>
                </TreeViewItem>
            </TreeView>
    </Grid>

    在后台中的TreeViewItem的Selected函数中添加:

        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void TreeViewItem_Selected(object sender, RoutedEventArgs e)
            {
                TreeViewItem treeViewItem = e.OriginalSource as TreeViewItem;
                if (treeViewItem == null || e.Handled) return;
                treeViewItem.IsExpanded = !treeViewItem.IsExpanded;
                treeViewItem.IsSelected = false;
                e.Handled = true;
            }
    
            private void TreeViewItem_Selected_1(object sender, RoutedEventArgs e)
            {
                TreeViewItem treeViewItem = e.OriginalSource as TreeViewItem;
                if (treeViewItem == null || e.Handled) return;
                treeViewItem.IsExpanded = !treeViewItem.IsExpanded;
                treeViewItem.IsSelected = false;
                e.Handled = true;
            }
        }

    这样就可以实现,左键单击一下TreeViewItem使它子元素直接展开。

    如图:

    点击一个元素展开其他元素收起:


    Xaml中:

    <Grid>
            <TreeView x:Name="Tree_View" SelectedItemChanged="Tree_View_SelectedItemChanged" HorizontalAlignment="Left" Height="208" Margin="243,35,0,0" VerticalAlignment="Top" Width="150">
                <TreeViewItem Header="AAA" Selected="TreeViewItem_Selected">
                    <TreeViewItem Header="aaa"/>
                    <TreeViewItem Header="bbb"/>
                    <TreeViewItem Header="ccc"/>
                </TreeViewItem>
                <TreeViewItem Header="BBB" Selected="TreeViewItem_Selected_1">
                    <TreeViewItem Header="aaa"/>
                    <TreeViewItem Header="bbb"/>
                    <TreeViewItem Header="ccc"/>
                </TreeViewItem>
            </TreeView>
     </Grid>

    就是给TreeView添加了一个SelectedItemChanged属性,当里面的元素状态改变时,执行这个方法。

    后台添加的代码:

    private void Tree_View_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
            {
                TreeViewItem selected_item = Tree_View.SelectedItem as TreeViewItem;
                TreeViewItem item;
                if (selected_item != null)
                {
                    for (int i = 0; i < Tree_View.Items.Count; i++)
                    {
                        item = Tree_View.Items[i] as TreeViewItem;
                        if (item != selected_item)
                        {
                            item.IsExpanded = false;
                        }
                    }
                }
            }

    注意:我这里的TreeView的Name叫作Tree_View.


    这样,就实现了点击一个元素展开其他元素收起的效果。

    如图:

  • 相关阅读:
    JVM调优之Tomcat启动加速(二)
    JVM调优(一)
    安装SqlServer的时候性能计数器注册表配置单元一致性失败的解决办法
    VS2013崩溃,无法打开项目的解决方案
    C#实现函数默认值和C#4.0实现默认值
    日志管理
    PXE网络装机服务
    NFS网络共享搭建
    NFS共享
    linux文件系统文件删除并恢复
  • 原文地址:https://www.cnblogs.com/Leozi/p/10799414.html
Copyright © 2011-2022 走看看