我有一个看起来像这样的层次结构 - 工厂>机器>组件>控件,其中“>”可以读作“包含列表”。
这非常适合使用 HierarchicalDataTemplates 的 TreeView。现在说我想在树中添加复选框,以便用户可以创建需要控制的树的“视图”。目前我的模板是绑定到实际机器/组件/控制对象的数据,就像这样......
<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 属性。我发现自己在这些类中添加了一堆属性和通知代码。我尝试的另一种选择是为每个机器/组件/控制类创建一个“视图”类。使用这种方法,我最终在“视图”类中创建了数据的副本,并且必须将其与实际数据同步。有什么好方法可以做到这一点?