我已经使用 WPF 和 Xaml 一段时间了,并且非常喜欢它们。然而,我可能仍在像 WinForm 时代那样设计东西,GUI 部分有太多代码和责任。
那么,在 WPF 模型中 GUI 到底负责什么? 如果单击 GUI 中的按钮,它是否应该显示弹出窗口并处理任何更新的值? 如果存在验证逻辑,是否应该检查并更新丢失/无效的字段? 它是否应该处理任何事件处理程序逻辑,例如点击、值更改等?
这个列表可能可以一直列下去。然而,我想根本问题是 GUI 是否应该只显示类中的数据并处理将新数据获取到类中?所有其他事情(实际上是所有事情)都应该在其他地方处理。
最佳答案
从技术上讲,wpf gui 可以根据方法做任何事情。您应该会看到我使用过并且仍在使用的一些第一个 wpf 应用程序。如果您想遵循最佳实践并充分利用您的 wpf 工作,那么您应该使用 MVVM 模式。
如果您遵循此模式,那么您的 GUI 应该只显示数据并调用位于适当 View 模型中的命令。甚至诸如计时器刷新数据之类的操作也应该存在于 View 模型中。然后,您将拥有一个模型类,它提供数据的组成以及需要发生的任何验证/强制。
这个想法是使 View 尽可能通用,以便您可以轻松地交换资源字典、调整 xaml 并拥有不同的外观/感觉,而无需再次重新测试所有逻辑。
为了回答您的基本问题,恕我直言, View 应该知道如何可视化您的数据,如果您需要更新/编辑行为,那么它应该知道如何调用 View 模型上的命令来为您执行此操作。任何其他设置都会开始混淆 View / View 模型/模型之间的界限,并且可能对您不利。
希望这有帮助。这篇 MVVM 文章确实帮助了我:
http://www.codeproject.com/KB/WPF/MVVMQuickTutorial.aspx?msg=3655304#xx3655304xx
关于.net - WPF GUI 负责什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4138260/