繁体   English   中英

如何将接口与代码分开?

[英]How can I divide interface from the code?

我知道我会因为这个抽象的问题而被否决。 我知道我缺少必要的特异性,但这对我来说是一个非常重要的问题。

我多年来一直是WinForms C#用户。 现在出于工作需要,我已被要求迁移到WPF。 但是,现在让我感到困惑的是:我使用得当吗? 具体来说,我是否可以正确划分xaml接口和代码?

根据经验,我会尽一切可能将xaml界面放入其中,尤其是事先定义好的所有内容。 另一方面,我允许在所有以编程方式定义的内容后面添加代码。 那是对的吗?

然后,将我所能拥有的全部放入xaml界面有什么优势?

您可以在代码隐藏文件中编写尽可能少的代码。 大多数时候,您可以摆脱零线

要对UI引发的事件做出反应,您应该使用Commanding机制 这将调用一个方法,而不是在您的Code-behind中,而是在View-Model中

然后,您应该在MVVM主题上浏览一下。

要将逻辑与后台代码分离的原因是,后台代码全部与UI有关。

如果要执行计算,则不应将这些问题与表示层混合使用。

例如,您将来可能希望将所有计算都存储在可移植的库中,这样您就可以拥有Windows Phone版本的应用程序或基于Web的服务,或者将某些繁重的计算替换为Web服务。

这里的“是”哲学是接受SOLID原则,WPF只是促进其使用,并允许进行更清洁的分离,以实现更好的重用性和可维护性。

只要没有程序逻辑,代码隐藏就没有问题。 UI事件和与UI相关的代码(例如:关闭窗口或打开一个新窗口)在后台代码中运行良好,应在此处使用。

MVVM的原理是将特定于UI的例程与业务逻辑和功能分离。

还要记住的一个非常重要的规则是,您创建的视图模型应该能够在asp.net网站,Windows Mobile应用程序或通用Windows应用程序中重用。 因此,也无需了解UI。 很多时候,我看到人们在一个项目中将视图(ui)和视图模型粘合在一起以克服视图模型的某些限制的实现。 但是,这是不好的做法,并且无法实现将视图与视图模型分离并允许在其他项目中实际使用视图模型的主要目的。

因此,对我的学生们来说,我建议您将ViewModel作为可移植类启动(这迫使您不要在ViewModel中使用ui元素),并根据您的视图使用特定于平台的功能来扩展它们。

重用您的视图模型很容易。

作为Viewmodel和视图之间的粘合,我建议使用Prism Prism Project页面Nuget包

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM