当前位置: 首页 > article >正文

WPF 的TreeView的TreeViewItem下动态生成TreeViewItem

树形结构仅部分需要动态生成TreeViewItem的可以参考本文。

xaml页面

<TreeView MinWidth="220" >
    <TreeViewItem Header="功能列表" ItemsSource="{Binding Functions}">
        <TreeViewItem.ItemTemplate>
            <HierarchicalDataTemplate>
                <WrapPanel>
                    <CheckBox IsChecked="{Binding IsSelect}"/>
                    <Label Content="{Binding Name}"/>
                </WrapPanel>
            </HierarchicalDataTemplate>
        </TreeViewItem.ItemTemplate>
    </TreeViewItem>
</TreeView>

对象类:

public class SelectFunction : NotifyPropertyChangedBaseClass
{
    private bool isselect;
    /// <summary>
    /// 是否选中
    /// </summary>
    public bool IsSelect
    {
        get { return isselect; }
        set
        {
            isselect = value;
            OnPropertyChanged();
        }
    }
    public Guid Id { get; set; }

    private string name;
    public string Name
    {
        get { return name; }
        set
        {
            name = value;
            OnPropertyChanged();
        }
    }
}

对象类继承的通知类:

public class NotifyPropertyChangedBaseClass : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    public void OnPropertyChanged([CallerMemberName] string propertyname = "")//通过该方法可以直接获取调用者的名称 前提是需要有默认参数
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyname));
    }
}

XAML绑定的集合

 private ObservableCollection<SelectFunction> functions;
 /// <summary>
 /// 可选的功能列表
 /// </summary>
 public ObservableCollection<SelectFunction> Functions
 {
     get { return functions; }
     set
     {
         functions = value;
         OnPropertyChanged();
     }
 }

//这只是集合的定义,自己给集合赋值

最终效果,我这没有用其自带的属性事件去判断是否选中,而是采用对象类中的IsSelect的值来判断的,仅供参考。


http://www.kler.cn/a/318182.html

相关文章:

  • nginx proxy_pass中斜杠问题
  • ubuntu22.04 安装FFmpeg,并进行视频的转化格式和裁剪
  • Wireshark中的length栏位
  • PHP反序列化_3-漏洞利用
  • 逐行加载 HTML 内容并实时显示效果:使用 wxPython 的实现
  • Linux—进程学习-02
  • 合宙LuatOS应用,与时间相关那些事
  • k8s中pod的创建过程和阶段状态
  • Allegro视频去除走线的小方块
  • Milvus - 四种一致性级别与应用场景解析
  • 可靠传输是什么?是基于UDP实现的吗
  • JUC并发编程_四大函数式接口和 Stream 流式计算
  • 适用于 Windows 的 7 大数据恢复工具,可靠的数据恢复工具可有效地恢复丢失的文件
  • 后端开发工程师转行大模型领域:全面学习路线指南,非常详细收藏我这一篇就够了
  • 【大语言模型_1】VLLM部署Qwen模型
  • 【速成Redis】04 Redis 概念扫盲:事务、持久化、主从复制、哨兵模式
  • 2-102基于matlab的蒙特卡洛仿真
  • C语言——文件操作
  • [数据结构]动态顺序表的实现与应用
  • 第二证券:“产业+科技” 中国并购重组市场持续升温
  • 【微服务即时通讯系统】——etcd一致性键值存储系统,etcd的介绍,etcd的安装,etcd使用和功能测试
  • Scikit-learn 识别手写数字
  • Qt:NULL与nullptr的区别(手写nullptr)
  • 数据处理与统计分析篇-day10-Matplotlib数据可视化
  • Leetcode 每日一题:Diameter of Binary Tree
  • DataWhale X 南瓜书学习笔记 task03笔记