如何打破450行代码

时间:2015-07-30 06:45:11

标签: c# wpf mvvm refactoring

所以我还是wpf / mvvm的新手。我没有使用任何框架,仅使用VS wpf project

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

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

此外,当我尝试此操作时,属性更改事件为null,因为视图的数据上下文设置为视图模型,而不是帮助程序。所以我的尝试失败了。

视图模型中的属性是针对一个组件 - 每个combo box

我真的不知道如何打破课堂了。

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

3 个答案:

答案 0 :(得分:1)

您还可以使用部分类来分隔不同的问题。

您可以使用foody在编译时注入属性更改代码。 有了foody,您可以使用[ImplementPropertyChanged] -Attributes,因此您的视图模型中不需要所有OnProperty-Changed内容。

答案 1 :(得分:0)

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

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

如果你不能通过将方法重构为辅助类来减少方法的数量,那么你是否仍然可以通过重构尽可能多的常用代码片段来减少方法的大小?

答案 2 :(得分:0)

一个视图可以包含许多视图。因此,如果您的某个视图模型太大,您可以考虑创建可以嵌套在主视图模型中的新视图模型和视图。这可能是一种方法。