在MVVM中动态添加/删除图形

时间:2012-09-24 14:42:33

标签: c# .net wpf graphics mvvm

我正在尝试设计一个WPF应用程序,用户可以在其中设计algorithm flow chart。这意味着我的网格上有大量的图形。 (我打算使用Canvas,但决定使用网格,因为canvas本身不支持ScrollViewer)。我在我的应用程序中使用MVVM设计模式。

要动态添加/删除图形,我应该将viewmodel中的哪些状态导出到我的视图?

1 个答案:

答案 0 :(得分:2)

在您要显示项目集合的所有情况下都是典型的,您需要:

  1. 创建一个代表每个项目的类(即项目的模型)
  2. 将此类的ObservableCollection公开为ViewModel的属性
  3. 详情可能会有所不同。我无法直观地确定您打算如何将视图实现为Grid,因此这里有一些指导原则,假设它是Canvas

    确定持久性模型

    当项目放在视图上时,用户是否可以移动它们?如果文件保存,关闭然后重新打开,他们的职位是否应该忠实再现?如果是这样,那么项目的模型需要聚合这些显示参数。如果没有,那么视图可能决定如何在运行时自己定位项目。

    如果有意义,请使用子ViewModel

    如果您的商品模型非常简单,那么您可以使用ItemTemplate的内联ItemsControl直观地表示它们。如果没有,那么您可能需要创建ItemViewModel并从主ViewModel中展示ObservableCollection<ItemViewModel>