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的值来判断的,仅供参考。

相关推荐
小二·20 小时前
微服务架构设计与实践
微服务·架构·wpf
暖馒21 小时前
WPF-Prism学习入门步骤记录
学习·wpf
baivfhpwxf20231 天前
雷赛(Leadshine)EtherCAT 数字 I/O 模块(如 EMC-E5064-8)的状态指示灯(I/O 状态)说明
c#·wpf
故渊at2 天前
第二板块:Android 四大组件标准化学理 | 第十二篇:四大组件全景总结与系统服务(System Server)架构
android·架构·wpf·四大组件·system service
伶俜662 天前
# [特殊字符] 零基础学 ArkUI 数据持久化(专题三):5 种存储方案深度对比
学习·华为·wpf·harmonyos
IT策士2 天前
Redis 从入门到精通:数据结构String 与键管理
数据结构·redis·wpf
AC赳赳老秦2 天前
技术文章素材收集自动化:用 OpenClaw 自动爬取行业资讯、技术热点、优质文章
运维·开发语言·python·自动化·wpf·deepseek·openclaw
加号32 天前
【WPF】 Storyboard 故事板动画设计深度解析
wpf
xiaoshuaishuai82 天前
C# Avalonia 依赖属性与WPF的区别
开发语言·c#·wpf
大G的笔记本2 天前
生产级 Spring Boot 网关简单实现方案
wpf