Wpf 视图和视图模型变得太大

Wpf 视图和视图模型变得太大,wpf,mvvm,Wpf,Mvvm,在向应用程序中的主视图添加额外功能的同时,我意识到代码量很快就会成为一个问题(目前viewmodel中大约有600行代码,我还有很多要添加) 我一直在寻找关于如何将视图拆分/设计为更小组件的文章,但我还没有找到令人满意的解决方案。一个人建议使用子viewmodels,但这会带来其他问题(viewmodels之间的依赖关系) 我曾想过使用用户控件,但视图上没有我在其他视图上使用的内容,所以它有点违背了用户控件的目的 在这种情况下,什么是正确的方法 谢谢, Adrian如果要将视图拆分为多个组件,则

在向应用程序中的主视图添加额外功能的同时,我意识到代码量很快就会成为一个问题(目前viewmodel中大约有600行代码,我还有很多要添加)

我一直在寻找关于如何将视图拆分/设计为更小组件的文章,但我还没有找到令人满意的解决方案。一个人建议使用子viewmodels,但这会带来其他问题(viewmodels之间的依赖关系)

我曾想过使用用户控件,但视图上没有我在其他视图上使用的内容,所以它有点违背了用户控件的目的

在这种情况下,什么是正确的方法

谢谢,
Adrian

如果要将视图拆分为多个组件,则需要进行视图合成。如果您正在构建MVVM应用程序,那么。类似的东西使视图合成变得非常简单


视图模型之间不一定存在依赖关系,它们应该只知道生成视图所需的内容。这可能是父视图模型包含的业务对象的子集。由于父视图模型将引用所有子视图模型,因此它可以在构建业务对象时将业务对象的相关部分传递给它们。

我也同意Caliburn.Micro是将应用程序拆分为较小组件的一个很好的解决方案

在Caliburn.Micro中,viewmodels之间的通信基于模式


这使得viewmodels之间存在松散耦合

我同意使用Caliburn Micro


但是,要扮演魔鬼代言人,您可以将ViewModel文件拆分为单独的文件(相同的类名),并在
关键字之前使用
部分
关键字。它通常更整洁,离分裂成不同的类别只有一步之遥(非分裂前体)

分裂并不理想

Caliburn工具包似乎专注于事件,而我的应用程序主要依赖于ICommand实现

对我来说,与Caliburn.Micro的第一次接触并不令人满意。 这个设置似乎是为VS2010量身定做的——这对我来说很有希望——因为我有VS2010 pro。但我在Silverlight的设置中迷路了。 与Prism之类的工具包相比,它缺乏易启动性。 现在切换需要很多时间。 我使用我自己的MVVM范式,它没有Caliburn那么抽象,它在任何地方都集成了多语言支持,而且它只是面临一个可以接受的问题,即由于绑定/数据上下文范式的性质,一些源变得太大。 对于这个问题,我接受“部分类”是一个解决方案——尽管我知道有一个更优雅的解决方案可用

在我工作最忙的时候,我不能换另一个工具包

因此,我温和地等待微软在绑定/数据上下文范例方面提供更多的灵活性

在这种情况下,Caliburn显示出将viewmodel分配给某些项目的更多智能。是吗?(我想是的。)


另一个选项可能是定义一个自定义(xaml可用)对象,该对象触发一个自定义分配器,该分配器将控件分配给哪个viewmodel。怎么样?

我不想费心写我的答案——这是一种比我能做的更雄辩的表达方式。我还必须同意使用Caliburn.Micro的建议。我发现这是一条稍微强劲的学习曲线,但后来我同时学习了WPF和MVVM。这是我从现在开始开发的所有客户端应用的唯一出路。谢谢,我将尝试Caliburn.Micro。