WPF之TreeView

介绍:

TreeView`控件用于显示分层结构的数据,如文件夹结构、组织结构图等。它允许用户通过展开和折叠节点来查看和隐藏其子节点。与ListBox和ListView一样,它也是继承自ItemsControl,这意味着它可以包含任何类型的对象的集合。

基本使用:

<TreeView Name="treeView">
    <TreeViewItem Header="根节点1"/>
    <TreeViewItem Header="根节点2">
        <TreeViewItem Header="子节点"/>
    </TreeViewItem>
</TreeView>

代码动态添加或删除节点:

            TreeViewItem rootNode = new TreeViewItem { Header = "新节点" };
            treeView.Items.Add(rootNode);  // 添加根节点
            rootNode.IsExpanded = true;// 展开节点
            rootNode.Items.Add(new TreeViewItem { Header = "子节点" });  // 添加子节点

数据绑定:

通过 HierarchicalDataTemplate 绑定分层数据,支持无限级嵌套:

        <TreeView x:Name="treeView" Width="600" Height="800" SelectedItemChanged="treeView_SelectedItemChanged">
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding Children}">
                    <TextBlock Text="{Binding Name}"/>
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>
public jianshuWin()
{
    InitializeComponent();

    List<User> users = AddUser("根节点", 5);
    var item = users[0];
    item.Children = AddUser("子节点", 3);
    var item2 = item.Children[1];
    item2.Children = AddUser("最后节点", 2);
    this.treeView.ItemsSource = users;


}
private List<User> AddUser(string nameStr, int count)
{
    List<User> list = new List<User>();
    for (int i = 0; i < count; i++)
    {
        var user = new User();
        user.Name = nameStr + i;
        list.Add(user);
    }
    return list;
}
public class User
{
    public string? Name { get; set; }
    public List<User>? Children { get; set; }

}

事件处理

        private void treeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
        {
            var selectedItem = e.NewValue as User;
            MessageBox.Show($"You selected: {selectedItem?.Name}");

            //var selectedItem = (User)this.treeView.SelectedItem;
            //MessageBox.Show($"You selected: {selectedItem?.Name}");
        }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、样式(Style)与模板(Template)二、资源字典ResourceDictionary三、数据绑定四、特...
    李姗姗_8ef1阅读 3,793评论 0 0
  • 控件介绍 教程数据 NoesisGUI包含一组标准控件,使您能够快速组装传统用户界面。它们可以分为四个主要类别,这...
    YottaYuan阅读 3,142评论 0 1
  • 数据绑定 教程数据 NoesisGUI提供了一种简单而强大的方法来自动更新业务模型和用户界面之间的数据。这种机制称...
    YottaYuan阅读 4,053评论 0 1
  • alert(a); function name(parameters) { alert(parameters); ...
    name阿喆azhe阅读 4,976评论 0 3
  • XAML (Extensible Application Markup Language) 可扩展应用程序标记语言...
    樗云阅读 3,138评论 0 1

友情链接更多精彩内容