用CheckBox操纵TreeView

时间:2017-08-17 08:14:59

标签: wpf treeview

我有一个带复选框的TreeView。我在网上看到了一些示例,展示了如何使用INotifyPropertyChanged将父/子复选框绑定在一起。 但是,我想要实现的不仅仅是那个。

假设我有2个不同的对象

主要对象

public class MainObject
{
    public string Name;
    public List<SubObject> SubObjects;
    public bool? IsChecked;
    //other parameters
}

子对象

public class SubObject
{
    string Label;
    public bool? IsChecked;
    //other parameters
}

TreeView显示

- Main_Object_1(Name)
    - Sub_Object_1(Label)
    - Sub_Object_2(Label)
- Main_Object_2(Name)
    - Sub_Object_3(Label)

我有3个目标:

1)父/子复选框关联

主要对象和子对象将根据单击的复选框反映正确的状态。

如果选中Main object复选框,则将检查所有子对象。

如果选中了其中一​​个子对象,则主对象将为null(完全填充某种颜色)

2)不同的设置关联

任何时候都可以检查一组(Main_Object_1或Main_Object_2)。

假设仅检查“Main_Object_2”和“Sub_Object_3”。 检查“Main_Object_1”或“Sub_Object_1”或“Sub_Object_2”时,取消选中“Main_Object_2”和“Sub_Object_3”。

3)在更新复选框显示旁边执行其他任务

我需要根据选中/取消选中的节点执行其他任务。

有关如何完成此操作的任何指针? 感谢。

1 个答案:

答案 0 :(得分:0)

我设法通过添加IsChecked属性和父属性以及Set属性来获得我想要的输出。之后我添加了一些逻辑来操纵复选框状态。对于目标3,我只需添加一个已检查的事件处理程序来执行我需要的任务。