0

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

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

4

1 回答 1

2

在您将要显示项目集合的所有情况下,通常情况下,您需要:

  1. 创建一个代表每个项目的类(即项目的模型)
  2. ObservableCollection将此类公开为 ViewModel 的属性

不过,细节可能会有很大差异。我无法想象您打算如何将视图实现为 a Grid,因此这里有一些指南,假设它是 a Canvas

确定您的持久性模型

当项目被放置在视图上时,用户是否能够移动它们?如果文档被保存、关闭然后重新打开,是否应该忠实地复制他们的位置?如果是这样,那么您的项目模型需要聚合这些显示参数。如果不是,那么视图可能会决定如何在运行时自行定位项目。

如果有意义,请使用子 ViewModel

如果您的项目模型非常简单,那么您可以ItemTemplate使用ItemsControl. 如果没有,那么您可能想要创建一个并从您的主 ViewModelItemViewModel公开一个。ObservableCollection<ItemViewModel>

于 2012-09-24T14:59:03.117 回答