如何分解只有450行代码的视图模型

本文关键字:代码 450行 视图 模型 何分解 分解 | 更新日期: 2023-09-27 18:05:33

所以我仍然是新的wpf/mvvm。我没有使用任何框架,只是一个VS wpf project

我有一个主窗口视图模型,它有5个属性,3个命令,几个私有函数,获取数据来填充视图,2个对话框和它们的函数,和一个委托事件处理程序。

我尝试创建一个helper class来处理私有函数,但是这些函数更新了引发属性更改事件的属性,所以我不得不将相同的属性添加到helper类。从视图模型复制helper类中的属性感觉很奇怪。

另外,当我尝试这样做时,属性更改事件为空,因为视图的数据上下文被设置为视图模型,而不是helper。所以我的尝试失败了。

视图模型中的属性为每个组件一个combo box

我真的不知道该怎么分课了

命令应该放在单独的文件中吗?如果我将私有函数移动到helper类中,如何将OnPropertyChanged event从helper传播到视图模型,再传播到xaml ?

如何分解只有450行代码的视图模型

您还可以使用分部类来分离不同的关注点。

你可以使用foody在编译时注入属性改变的代码。对于foody,你可以使用[ImplementPropertyChanged]-Attributes,所以在你的视图模型中不需要所有的OnProperty-Changed的东西。

首先想到的是,你不应该在MainWindowViewModel中拥有所有的代码,它应该只作为嵌入视图的容器,并处理全局事件等。因此,尽量将它模块化成多个视图(用正确的命名告诉你视图的目的)。

我很确定对话框可以被提取到自己的类。

如果你不能通过重构帮助类来减少方法的数量,也许你仍然可以通过重构尽可能多的常用代码片段来减少方法的大小?

一个视图可以由多个视图组成。因此,如果一个视图模型太大,你可以考虑创建新的视图模型和视图,它们可以嵌套在主视图模型中。这可能是一种方法