如何将接口与代码区分开来?
本文关键字:区分开 代码 接口 | 更新日期: 2023-09-27 18:16:49
我知道我会被否决,因为这个问题有点抽象。我知道我遗漏了必要的细节,但这对我来说是一个非常重要的问题。
我已经是WinForms c#用户很多年了。现在,由于工作需要,我被要求迁移到WPF。但现在令我困惑的是:我是否正确地使用了它?具体来说,我是否正确划分了xaml接口和代码?
根据经验,我在xaml接口中放入了我所能放入的所有内容,特别是事先定义的所有内容。另一方面,我让代码隐藏在所有以编程方式定义的东西后面。对吗?那么把所有我能做的都放到xaml接口里有什么好处呢?
在代码隐藏文件中编写尽可能少的代码。大多数情况下,您可以使用零行。
要对ui引起的事件作出反应,您应该使用 commands 机制。这将调用一个方法,而不是在代码后面,而是在视图模型中。然后你应该搜索一下MVVM主题。
你想要将你的逻辑与你的后台代码分开的原因是为了让后台代码都是关于UI的。
如果你有计算要执行,你不应该把这些考虑与表示层混合。
例如,你可能希望将来所有的计算都在一个便携式库中,这样你就可以有一个Windows phone版本的应用程序,或者一个基于web的服务,或者用web服务代替一些繁重的计算。
这里的yes哲学是拥抱SOLID原则,WPF只是促进它的使用,并允许更清晰的分离,以获得更好的重用和可维护性。
只要不包含程序逻辑,代码隐藏就没有问题。UI事件和UI相关代码(例如:关闭窗口或打开一个新窗口)在代码隐藏中工作完美,应该在那里使用。
MVVM背后的原则是将UI特定的例程与业务逻辑和功能解耦。
还有一个非常重要的规则要记住的是,你创建的视图模型应该能够被重用,让我们说asp.net网站,windows移动应用程序或通用的windows应用程序。所以也没有必要是UI意识。很多时候,我看到人们在一个项目中将视图(ui)和视图模型粘合在一起,以克服视图模型的一些限制。然而,这是一个糟糕的做法,并且违背了将视图与视图模型解耦并允许在其他项目中实际重用视图模型的主要目的。
对于我的学生,我建议因此开始你的viewmodel作为可移植类(这强制你不要在你的viewmodel中使用ui元素),并根据你的视图扩展它们与平台特定的功能。
重用你的视图模型是一件轻而易举的事。
作为视图模型和视图之间的粘合剂,我建议使用Prism Prism项目页面和Nuget包