0

我有一个看起来像这样的层次结构 - 工厂>机器>组件>控件,其中“>”可以读作“包含列表”。

这非常适合使用 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 属性。我发现自己在这些类中添加了一堆属性和通知代码。我尝试的另一种选择是为每个机器/组件/控制类创建一个“视图”类。使用这种方法,我最终在“视图”类中创建了数据的副本,并且必须将其与实际数据同步。有什么好方法可以做到这一点?

4

1 回答 1

2

这两篇 CodeProject 文章帮助了我:

于 2008-12-24T16:39:16.917 回答