涉及treeview的WPF设计问题

涉及treeview的WPF设计问题,wpf,treeview,Wpf,Treeview,我有一个这样的层次结构- 工厂>机器>组件>可读取“>”的控件 as“包含一个列表” 这非常适合使用HierarchycalDataTemplates的树状视图。现在假设我想在树中添加复选框,这样用户就可以创建需要控制的树的“视图”。目前,我的模板是绑定到实际机器/组件/控制对象的数据,如 <HierarchicalDataTemplate DataType="{x:Type src:Component}" ItemsSource = "{Binding Path=Controls}"&g

我有一个这样的层次结构- 工厂>机器>组件>可读取“>”的控件 as“包含一个列表”

这非常适合使用HierarchycalDataTemplates的树状视图。现在假设我想在树中添加复选框,这样用户就可以创建需要控制的树的“视图”。目前,我的模板是绑定到实际机器/组件/控制对象的数据,如

<HierarchicalDataTemplate DataType="{x:Type src:Component}" ItemsSource = "{Binding Path=Controls}">
    <StackPanel Orientation="Horizontal">
        <CheckBox IsChecked="False" />
        <TextBlock Text="{Binding Path=Name}"/>
    </StackPanel>
</HierarchicalDataTemplate>

我不想更改我的机器/组件/控制类的代码,以便能够处理“视图”创建。换句话说,我希望将“数据模型”代码和UI代码分开。例如,要处理复选框,我需要将其绑定到控件的IsSelected属性。我发现自己向这些类添加了一堆属性和通知代码。
我尝试的另一种选择是为每个机器/组件/控制类创建一个“视图”类。使用这种方法,我最终在“视图”类中创建了数据的副本,并且必须将其与实际数据同步。做这件事的好方法是什么?

这两篇CodeProject文章帮助了我: