0

我想使用 WCF Ria 服务和 MVVM 设计模式创建一个 Silverlight 应用程序。

该应用程序的主页将包含一个“外壳”和大量(10 或 100 多个)不同外观(形状/大小/属性)的对象,它们相互链接(形成一种图形)。

这些项目需要鼠标可拖动,并且它们的当前位置/状态需要保存到后端数据库。

我觉得实现这一点的最好方法是为每个显示的项目显示一个小的 ViewModel 和 View,将所有重要的属性放入 ViewModel,然后以某种方式在主“shell”中显示所有这些 View。

但是,我不知道这究竟是如何实现的。我考虑过使用 MVVM Light,但没有找到任何可以显示类似内容的示例。

任何人都可以指出一些关于如何做到这一点的例子或想法吗?

4

3 回答 3

3

“当你只有一把锤子时,一切看起来都像钉子” :)

MVVM 并非旨在像您描述的那样管理图形密集型情况。它是以灵活的方式将高级概念拼接在一起的粘合剂。使用 MVVM,您将增加影响性能的开销(例如,绑定在幕后使用反射)。涉及的对象越多,影响就越大。

我可以建议的最佳起点是想象您需要从 3rd 方控件(例如自定义控件/容器)中获得什么,如果实际不存在,则将其构建为第三方自定义控件。

在实践中,您会发现自定义控件很少基于 MVVM,出于性能原因,不仅仅是因为“他们通常不需要它”。它们很可能会为外部接口公开MVVM 兼容属性,但不会为低级内部提供。

MVVM 是一种相对高级的技术。不要觉得你必须在所有事情上都实施​​它。

于 2012-08-01T07:30:30.677 回答
0

在 MVVM 之后执行以下操作:

  1. 模型 - 创建模型对象,该对象将负责获取和持久化屏幕上形状的坐标;
  2. 视图模型 - 一种视图模型,它将启动获取和持久化模型对象;
  3. 查看 - 就您而言,这是您完成大部分工作的地方。使用 Canvas 面板创建基于 ItemsControl 的自定义控件。自定义控件应传递 ItemsSource 中模型对象的集合,允许拖放容器并在用户将容器放置在某个位置时调用视图模型命令
于 2012-08-01T08:56:09.140 回答
0

看看 Telerik 控件,特别是 radTileView,这似乎具有您正在寻找的功能。他们还有一个持久性框架,应该允许您将图块的位置保存回您的数据库。

于 2012-08-07T16:03:22.800 回答