这些天我正在使用 .NET 平台的 WPF
和 MVVM
相关功能和工具开发一个新的 c# 项目。我对这种类型的应用程序开发完全陌生。在我开始学习 ICommand
和 INotifyPropertyChanged
之类的东西后,我注意到当我深入研究这些类和命名空间 System.Windows.Input
时,我实际上正在远离可移植性。
在我坚持使用 MVVM
之前,我曾经为我的应用程序的业务层创建一个可移植的类库。
来自 MVVM
的这些 PresentationCore.dll
类是否在 Xamarin android、iOS 和 mac 等其他平台上得到很好的支持?如果我在可移植类库中使用 ICommand
、 CommandManager
和其他类,我是否也可以在其他提到的平台中使用实现的库?
远离便携性是什么意思?
例如,假设我们要开发一个可移植到 windows 和 android 平台的应用程序。当我实现 ICommand
时,我只能使用带有 WPF
控件的命令,尽管我可以轻松地在 xamarin android 应用程序中按钮的单击事件处理程序中调用该方法。所以在这个例子中,ICommand 在 Xamarin android 应用程序中是无用的。
请您指导我在可移植类库中编写 MVVM
时应该考虑什么? MVVM
和 PCL
有什么共同点?当他们的概念和功能座位彼此不安时?
最佳答案
简短回答:可移植性不是 WPF 的主要设计目标之一。来自 the MSDN site :“Windows Presentation Foundation (WPF) 的主要目标是帮助开发人员创建有吸引力且有效的用户界面”。更具体地说,它是为了帮助开发人员为 Windows 创建用户界面,因此是 W。并且鉴于 View 模型和 View 之间松散但隐含的耦合,这意味着可移植性的最佳选择 IMO 是在您的模型中,也可能是在您的 ORM 中.只要您坚持良好的 SOC 实践,这可能是您在不依赖第三方解决方案的情况下获得的最佳实践……这通常会进一步降低可移植性,同时在其他地方增加一大堆麻烦。
关于c# - 可移植类库中的 WPF MVVM 编程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32064384/