wpf mvvm confusion

15 浏览
0 Comments

wpf mvvm confusion

根据我对MVVM的理解,它包含一个模型(实现了INotify的实体类),视图(XAML代码)以及一些作为ViewModel的类(通常继承自ICommand),用于在特定事件上生成事件/命令...我只是想知道ViewModel类和XAML的代码后台类之间的区别...为什么我们不仅仅考虑并加强代码后台...我脑海中没有什么明显的理由来证明这一点...或者请举例说明MVVM的概念...以及为什么对于WPF应用程序来说,MVC或MVP是一种困扰?

0
0 Comments

WPF MVVM 混淆的问题出现的原因是因为 Model 没有实现 INotifyPropertyChanged 接口,而 ViewModel 实现了。实际的 WPF 视图与 ViewModel 进行数据绑定。因此,当 Model 发生变化时,视图无法得到更新,导致混淆。

为了解决这个问题,需要在 Model 中实现 INotifyPropertyChanged 接口,以便在数据发生变化时通知视图进行更新。在 ViewModel 中,可以通过将 Model 的属性绑定到视图的方式,实现数据的双向绑定。这样,当 Model 的属性发生变化时,视图会自动更新,从而解决了混淆的问题。

MVVM 模式与 Fowler 的 Presentation Model 模式非常相似,它们都将视图的状态和行为抽象为一个 View。然而,在实践中,只有少部分应用程序的用户界面可以直接与 Model 进行数据绑定,特别是当 Model 是一个已存在的类或数据模式,应用程序开发人员无法对其进行控制时。此外,Model 很可能具有无法直接映射到控件的数据类型,而视图可能需要执行一些在严格定义的 View 中没有意义的复杂操作,或者这些操作太特定,无法包含在 Model 中。最后,我们需要一个地方来存放视图的状态,例如选择或模式。这些任务由 ViewModel 负责处理。ViewModel 代表了“视图的模型”,可以将其看作是视图的抽象,但它也为视图提供了一种特殊的 Model,用于数据绑定。在这种情况下,ViewModel 包含了将 Model 类型转换为 View 类型的数据转换器,还包含了视图与 Model 进行交互的命令。

MVVM 模式与 WPF 相关联,因为当 WPF 的数据绑定机制与这种模式结合时,可以轻松地进行可测试的图形用户界面编程。通过将 Model、ViewModel 和 View 分离,可以更好地实现代码的重用和测试的可靠性。这种模式可以使开发人员更加专注于业务逻辑的实现,而无需过多关注界面的实现细节。

0
0 Comments

WPF MVVM混淆的原因是在开发应用程序时,开始时所有的代码都放在代码后端,然后才进行了MVVM模式的重构。这样做的原因可能是因为开发人员在最初编写代码时并没有意识到MVVM模式的重要性,或者他们可能不熟悉MVVM模式的概念和用法。在这种情况下,他们可能会发现代码后端变得越来越混乱和难以维护,导致开发过程变得困难。

为了解决这个问题,开发人员可以参考一些教学视频和教程来学习MVVM模式的概念和用法。在给出的链接中,有两个视频可以帮助开发人员了解MVVM模式的应用。第一个链接是Mike Taulty的系列视频,其中包含了10个视频,至少可以查看第一个和第二个视频。第二个链接是Jason Dolinger关于Model-View-ViewModel的视频。

此外,开发人员还可以查看Stack Overflow上的一些问题和答案,以获取更多有关MVVM模式的链接和教程。在给出的链接中,有一个问题提供了从头到尾的MVVM教程。

对于开发人员来说,Jason Dolinger的视频是很好的参考资料,而Mike Taulty的系列视频则特别适合那些希望混合使用Prism的开发人员。

通过学习和应用MVVM模式,开发人员可以将代码的逻辑和界面分离,使代码更加清晰和可维护。通过使用绑定和命令,开发人员可以实现更好的代码重用和测试性,提高应用程序的质量和开发效率。因此,解决WPF MVVM混淆的方法是学习和应用MVVM模式,并将代码进行重构,使其符合MVVM的架构和原则。

0
0 Comments

问题的原因是在于使用MVVM设计模式时,有些人认为直接在代码后台进行操作会更容易阅读代码。因为在代码后台文件中,你可以处理XAML中不可能或者太复杂的UI操作。而在视图模型代码文件中,你可以处理与填充表单数据相关的所有操作。

然而,并不是所有的设计模式都适用于所有情况,盲目地遵循设计模式并不是一个好主意。对于非常简单的窗口,使用MVVM可能并没有太大意义。但对于较大的窗口,MVVM能够强制你将关注点分离,这通常会使得代码后台文件和MVVM类更易于阅读、理解和调试。

解决这个问题的方法是根据具体情况来决定是否使用MVVM设计模式。对于较小的窗口,可以考虑直接在代码后台进行操作。而对于较大的窗口,使用MVVM可以使代码更加清晰和易于维护。

0