c# – 在大型应用程序中使用MVVM – 共享视图模型,模型,状态等
我想知道你们中有谁知道一些很好的教程来解释大型应用程序的MVVM.我发现的每一个关于MVVM的教程都只是基础知识(如何实现model,viewmodel和view),但是对于在应用程序页面之间传递数据以及在哪里可以存储常见的应用程序页面的技术和模式,我很好奇数据(在多个视图模式之间共享)等
我喜欢没有任何MVVM框架(MVVMLight等)的纯c#/ XAML解决方案. 解决方法
如果数据传递是事件驱动的(即:您希望在收到从服务器推送的数据时通知),请使用弱事件. Prism的EventAggregator是许多实现之一. 如果数据传递是不变的,那么DataContext就会向下流过XAML树,只需使用绑定.
纯粹主义者会告诉你直接在XAML中实例化它们.我几乎从来没有这样做. 现在,我们可以做好事情,但是有什么好处呢?让视图的代码隐藏获取ViewModel,或者将其注入到其构造函数中是非常好的.
如果数据是全局的:使用静态类/属性, 如果数据仅在多个ViewModel之间共享但不是全部,则在视图模型上使用继承/合成以及控制器模式. 从经验汇总的其他提示: >只限制你所需要的:当你只需要一个字符串时,不要绑定到整个对象. 例: public class VisibilityBinding : MultiBinding,IMultiValueConverter { public VisibilityBinding() { var isSomething = new Binding("IsSomething"); isSomething.ElementName = myUsrCtrl; this.Bindings.Add(isSomething); //Add more bindings this.Converter = this; } //Implement IMultiValueConverter to compute a System.Visibility from the bound values. } 而在XAML: <TextBox Visibility={customMrkup:VisibilityBinding} /> >尽量避免任何数据重复,一直到DAL.同步可以通过I(Multi)ValueConverter推导出的字段变得复杂得非常快. 如果我想到任何更多的技巧,我会回来添加它们. 希望这可以帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |