WPF-MVVM:用于类似Paint的应用程序的自定义控件/用户控件/ POCO?

时间:2010-07-10 12:49:09

标签: wpf mvvm

所以我目前正在为体育创建一个类似Paint的应用程序。对于每种类型的运动,你都会有一些“形状”(篮球中的球/篮球,冰球中的冰球/球等)。

现在我的主要问题是如何设计这些形状。据我了解,主要有3种选择:

  • 使用ControlTemplate进行自定义控制
  • 用户控件
  • 用于属性存储的POCO-Object(ViewModel),用于可视化表示的DataTemplate

我对Shape-objects有以下要求:

  • 应该可以轻松序列化(保存为XML等)
  • 应该能够为其添加装饰(为了调整大小等)
  • 应该是可扩展/可修改的(为它们提供不同的视觉样式等)。
  • 应为属性提供一些默认值机制

哪种选择最符合我的要求?

1 个答案:

答案 0 :(得分:0)

由于你有一个清晰的域模型(球,冰球等),我建议将它们建模为单独的对象(ViewModels),然后使用DataTemplates在视觉上对它们进行样式化。这样,您可以最大程度地控制序列化的内容,并且可以独立于数据模型对视觉效果进行版本化。

序列化将由您的数据模型处理。 DataTemplates可能使用自定义形状(仅从Shape派生)来进行实际渲染。 Adorners可以处理任何UIElements,如果您使用数据绑定将相关属性绑定回ViewModel,则可以获得要序列化的所需数据。 至于默认值的机制,只需让Ball和Puck类的默认构造函数设置正确的值(直径,重量等)

快乐编码