MVVM、Catel 和图形 UI 交互

Posted

技术标签:

【中文标题】MVVM、Catel 和图形 UI 交互【英文标题】:MVVM, Catel and Graphical UI Interaction 【发布时间】:2014-07-30 18:57:15 【问题描述】:

我正在开发一个图形应用程序,用户单击 FrameworkElements 并将它们拖到 Canvas 上。它在代码隐藏中工作,但希望使用 Catel/MVVM 对其进行更新。

我的一般问题:在这个应用程序中,ViewModel 必须“了解”视图,因为它必须知道相对于“LayourRoot”的 MousePosition 才能更新对象位置,这与 MVVM 模式相反。在后面的代码中处理所有 Mouse/FrameworkElement 交互以及任何具有 MVVM 属性的数据/FrameworkElement 会更好吗? (我所说的 data/FrameworkElement 是指在数据存储中存储某些属性值,例如 Canvas.Top、Canvas.Left、Fill 等。)

对一般方法有什么建议吗?

【问题讨论】:

查看My Example 的基于 MVVM 的类似 Canvas 的 UI,其中包含可拖动的项目。 好东西例如,HighCore 【参考方案1】:

拖放是 UI 问题,因此应该驻留在 UI 中。

MVVM 并不意味着“没有代码隐藏”。这意味着将业务逻辑与 UI 关注点分开。

View 应该处理拖放,并且一旦放下它应该更新对象模型中的位置信息。

【讨论】:

以上是关于MVVM、Catel 和图形 UI 交互的主要内容,如果未能解决你的问题,请参考以下文章

Catel MVVM 结构

前端的UI设计与交互之图标篇

将 catel 与 3rd 方控件一起使用

Android图形系统(八)-app与SurfaceFlinger共享UI元数据过程

MVC和MVVM

MVC和MVVM的差别