这是场景:
- 我有一个显示一些数据的视觉效果
- The data to the visual can come in one of two ways
- 通过用户通过键盘或鼠标输入
- 通过一些后端源
- Both these data inputs can be of one of two forms
- 控制数据或
- 简单显示的原始数据
- 控制数据导致视觉变化
- 原始数据简单地按原样显示
换句话说,视图由两个主设备提供服务,即用户输入和后端输入。
一个例子是由用户输入控制视觉效果的多用户游戏
但也可能具有由某些后端输入(例如 TCP/IP)控制的相同视觉效果。
另一个例子是终端模拟器,它获取用户输入,但也获取数据
来自其他来源,无论是远程登录还是串行等。
我正在考虑为视觉效果编写一个 WPF 自定义控件。换句话说,
它是一个黑盒子,可以解释输入并显示结果。
让用户输入到这个自定义控件中很容易,因为人们可以监听
适当的事件并根据需要进行处理。然而,如何才能听到
后台输入?公开绑定到的依赖属性不会导致
有道理,但在视觉上公开用数据调用的方法也不会
感觉。
另一种选择是 MVVM 架构,其中 Model 是后端数据源
视图模型完成所有工作。它获取后端数据(通过模型)
和用户输入(通过适当的命令绑定或类似的命令),它使得
适当地感知这些并绑定到视图以显示这些更改。
自定义控件的优点是它可以作为一个控件来使用
自我照顾,因此消费者只需做很少的工作即可使用它
但问题是从后端获取数据。 MVVM方法的优点在于它巧妙地封装了处理逻辑、视图等。问题是
必须对每个后端重复此模式。因此,视觉效果非常简单
并将所有处理逻辑暴露在控件之外。基本上我想要
使其非常容易食用,以便有人可以拿走并使用它而无需添加
太多的外部逻辑来进行处理等。他们提供的只是后端数据
融入视觉的来源。
抱歉这篇文章很长,但我正在学习 WPF,这是一个有趣的设计
向我提问。欢迎所有想法、评论等。
谢谢阅读。
我肯定会使用 MVVM 模式。您可以在代码中实现非常好的关注点分离,并且您的视图模型也可以在用户界面之外进行测试。您还可以在 Blend 中编辑视图。我不认为将视图模型连接到后端比连接自定义控件更复杂。您可能决定使用依赖项注入或服务定位器来连接事物。通过使用所有这些设计模式,您可以获得更加解耦和可测试的解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)