.net - WPF GUI 负责什么?

标签 .net wpf user-interface xaml

我已经使用 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/

相关文章:

.net - 录制编程时间 - 写入还是下载?

c# - 我可以将 FileStream 作为文件的通用接口(interface)返回吗?

c# - TaskbarIcon 不会显示带有自定义图标的气球提示

java - Android GUI 不显示

android - 如何执行更新 UI View Android 的后台作业

ruby-on-rails - 虚拟 ruby - 没有这样的文件或目录 - main.rb (LoadError)

c# - 静态委托(delegate)是线程安全的吗?

c# - 如何评估 c#/.net 中的数学表达式

c# - 将自定义控件内的 TextBlock 绑定(bind)到同一自定义控件的依赖属性

c# - ObservableCollection更改后,ListView不更新