c# - 如何分解 450 行代码的 View 模型

标签 c# wpf mvvm refactoring

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

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

我尝试创建一个 helper class处理私有(private)函数,但这些函数会更新引发属性更改事件的属性,因此我必须将相同的属性添加到帮助程序类中。从 View 模型中复制助手类中的属性感觉很奇怪。

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

View 模型中的属性分别用于一个组件-a combo box .

我真的不知道如何打破类了,而不是我已经知道了。

命令应该放在单独的文件中吗?如果我将私有(private)函数移动到辅助类中,如何传播 OnPropertyChanged event从助手到 View 模型到 xaml ?

最佳答案

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

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

关于c# - 如何分解 450 行代码的 View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31716895/

相关文章:

c# - Combobox 只显示一些comboxitems

wpf - 使用触发器在鼠标悬停时设置文本 block 前景

c# - WPF 使用附加属性和行为执行 ICommand

c# - 从 Xaml 运行异步方法

c# - 如何使用 CommandManager 并且仍然能够手动触发 ICommand.CanExecuteChanged 事件,即明确地?

c# - Josh Smith 的 MVVM 示例应用程序中关于 EventHandler 的问题

c# - PictureBox- 网格和正方形填充(生命游戏)

c# - 我们可以通过调用参数化构造函数来初始化数组吗

java - GC 如何阻止新创建的内存/对象在 GC 周期期间进行清理 (Java/C#)

c# - 如何在winform应用程序中显示WPF窗口