public class CommonTreeView : NotifyPropertyBase

{

// 父

///public CommonTreeView Parent

{

get;

set;

}

// 子

///public ListChildren

{

get;

set;

}

// 节点的名字

///public string NodeName

{

get;

set;

}

public bool? _isChecked;

// CheckBox是否选中

///public bool? IsChecked

{

get

{

return _isChecked;

}

set

{

SetIsChecked(value, true, true);

}

}

public CommonTreeView(string name)

{

this.NodeName=name;

this.Children=new List();

}

public CommonTreeView() { }

private void SetIsChecked(bool? value, bool checkedChildren, bool checkedParent)

{

if (_isChecked == value) return;

_isChecked = value;

//选中和取消子类

if (checkedChildren && value.HasValue && Children != null)

Children.ForEach(ch => ch.SetIsChecked(value, true, false));

//选中和取消父类

if (checkedParent && this.Parent != null)

this.Parent.CheckParentCheckState();

//通知更改

this.SetProperty(x => x.IsChecked);

}

// 检查父类是否选 中

/// 如果父类的子类中有一个和第一个子类的状态不一样父类ischecked为null

///private void CheckParentCheckState()

{

List checkedItems = new List();

string checkedNames = string.Empty;

bool? _currentState = this.IsChecked;

bool? _firstState = null;

for (int i = 0; i

{

bool? childrenState= this.Children[i].IsChecked;if (i==0)

{

_firstState= childrenState;}

else if (_firstState != childrenState){

_firstState= null;}

}

if (_firstState != null)_currentState= _firstState;SetIsChecked(_firstState, false, true);

}

/// /// 创建树

/public void CreateTreeWithChildre( CommonTreeView children,bool? isChecked)

{

this.Children.Add(children);

//必须先把孩子加入再为Parent赋值,

//否则当只有一个子节点时Parent的IsChecked状态会出错

children.Parent = this;

children.IsChecked = isChecked;

}

}

wpf 带复选框的treeview_WPF:带复选框CheckBox的树TreeView相关推荐

  1. WPF中datagrid如何在第一列添加勾选框

    主要使用的是DataGridCheckBoxColumn,能够自动为所有行添加勾选框,随后我们在设置勾选框的绑定Binding="{Binding IsSelected,RelativeSo ...

  2. WPF 用户控件分享之边上带输入框的圆圈

    WPF 用户控件分享之边上带输入框的圆圈 独立观察员 2022 年 8 月 20 日 最近有这样一个需求,有一圈圆形,每个圆形边上有个输入框,以下是完成后的效果图: 拿到这个需求后,分析界面上每个圆形 ...

  3. 在reader中勾选pdf复选框_绝对可勾选的在WORD 2003中加入复选框的方法

    绝对可勾选的在 word 2003 中加入复选框的方法 方法一: 要在 word 2003 中加入复选框,最好是使用"控件工具箱"来完成. 具体方法是: 打开 Word ,依次点击 ...

  4. PyQt5 技巧篇-复选框绑定行内容,全选、清空、展示选中的内容功能实现演示,设置复选框选中,检查复选框选中状态

    先看效果图,选中了几行,然后将选中的内容展示出来. 我设置两个有序序列,分别存储对应的复选框和行内容. 我的行内容是用的 label 标签. # 存储右边label组件的有序列表def get_L_b ...

  5. 复选框全选效果,根据单个复选框的选择情况确定全选复选框是否被选

    复选框全选与全不选效果 逻辑:复选框的checked属性与复选框全选效果对应起来,全选复选框checked:true 时,全部复选框checked:true: 全选框checked:false 时,全 ...

  6. Flutter:使用复选框进行下拉多选

    Flutter:使用复选框进行下拉多选 本文向您展示了在 Flutter 中使用复选框实现下拉多选的两种不同方法.在第一种方法中,我们将从头开始构建多选.在第二种方法中,我们将使用第三方包快速完成工作 ...

  7. axure实现复选框全选_jq简单的全选、反选和全不选效果

    jquery是很实用和方便的前端效果库,可以让我减少很多的操作和节省很多的时间.今天,我们来说一下jq的全选.全不选和反选效果,本篇讲的是最简单简洁的jq全选.全不选和反选的例子.如果还有什么其他的功 ...

  8. [Ext JS 4] 实战之多选下拉单 (带checkbox) 续 - 带ALL 选项

    前言 在 [Ext JS 4] 实战之多选下拉单 (带checkbox) 这一篇中有介绍如何开发带有checkbox 的多选菜单. 但是实际项目开发过程中, 用户的需求也是不断精进的. 使用淘宝或是其 ...

  9. java得到选择的复选框_java怎么获取复选框的值_java学习记录20200817

    2020.08.17-2020.08.23学习计划: (1)完成前端知识积累HTML+CSS+JavaScript(周一至周四) (2)完成ssm两门课复习(周一至周五) (3)完成所有已学代码的熟悉 ...

最新文章

  1. 2021年九月最新Java面试必背八股文,338道最新大厂架构面试题
  2. 【pytorch】pytorch自定义训练vgg16和测试数据集 微调resnet18全连接层
  3. 太强了!这个 Jupyter notebook 离线工具可以用一辈子!
  4. Java黑皮书课后题第5章:**5.45(统计:计算平均值和标准方差)在商务应用中……编写一个程序,提示用户输入10个数字,然后运用下面的公式,显示这些数字的平均值以及标准方差
  5. matlab2010a连接mysql_MATLAB2010a+OpenCV2.3.1+VS2010运行TLD
  6. drcom linux怎么运行,linux下使用drcom登录认证
  7. java随机抽取_java 随机抽取案例,不重复抽取
  8. 使用 APPLY 来为每行调用表值函数
  9. cordova android ios
  10. 181007扇贝有道每日一句
  11. 【疾病分类】基于matlab GUI模糊逻辑分类叶病严重程度分级系统【含Matlab源码 194期】
  12. 下载各种百度文库以及豆丁网文章的简便方法
  13. OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x000001faf3e50000
  14. cas5.2集成ldap
  15. Photoshop实用的快捷键大全
  16. codeforces-831A(Unimodal Array)
  17. 通过温度湿度计算露点
  18. PNP三极管和NPN三极管的开关电路(EC极性接线判断简单明了)简单的技巧:三极管上箭头所在方向的二极管,只要二极管正向导通,那么三极管上下就能导通。
  19. 如何用CSDN发布文章
  20. 音视频入门 (iOS上fdk-aac的交叉编译)

热门文章

  1. 【uni-app】深度作用选择器解决修改checkbox样式无效问题
  2. Oracle的UNION函数
  3. Matlab中pickic_法语「野餐」怎么写?不是picnic哦
  4. mysql索引失效_导致MySQL索引失效的几种常见写法
  5. 【Java】5.2 方法详解
  6. Spring Boot 线程池的创建、@Async 配置步骤及注意事项
  7. No module named MNIST_写给小白的用fashion-mnist入门机器学习和深度学习的简单项目(非常全面!!!)...
  8. java优先队列PriorityQueue修改队列内元素排序问题
  9. java 利用dfs生成简单的随机迷宫(效率不高)
  10. webpack从入门到精通(三)生产环境的基本配置