WPF:在MVVM中管理Windows(打开,关闭等)?
我已经在很多地方读到过它.大多数人都指的是这两个链接:
> How do I handle opening and closing new Windows with MVVM? 我不明白他们中的任何一个.对于MVVM,我是初学者.有些人在MVVM中提到窗口操作时会提到控制器.这些是什么以及如何实施?通过本书,MVVM由模型,视图模型和视图组成 – 控制器在哪里进入? 如果有人可以提供以下用例的样本,那就太棒了(对于那些刚开始使用这个用户的人来说,就像我一样): >先决条件:打开一个窗口. 解决方法
ViewModel到ViewModel通信通常由Event Aggregator模式的实现来处理.
MVVM Light使用Messenger类,Prism有另一种实现,但基本上这是在没有耦合的情况下在View Models之间发送消息的一种方法. 有一些例子,Articles描述了用法. 关于WPF中的控制器,我不知道. 关于这个例子: – 我有一个带有WindowsViewModel的Windows.这个类应该有一个绑定到Button的Command. – 用户单击按钮.执行命令. – 命令打开一个新窗口. 在这里,您应该创建对话视图模型,并以某种方式创建窗口.或者使用ViewModel创建Window,但ViewModel应该不了解View,否则不可测试. 我们使用这样的东西,因为我们有一些要求,但它 bool? ShowDialogImpl<TViewModel>(Action<TViewModel> setup) where TViewModel : ViewModel { return (bool?)DispatcherHelper.UIDispatcher.Invoke( (Func<bool?>)(() => { var viewModel = viewModelFactory.Get<TViewModel>(); viewModel.ViewService = this; setup(viewModel); var window = new Window { Owner = this,SizeToContent = SizeToContent.WidthAndHeight,WindowStartupLocation = WindowStartupLocation.CenterOwner,Content = ViewFactory.CreateView<TViewModel>(),DataContext = viewModel,WindowStyle = WindowStyle.ToolWindow,ShowInTaskbar = false }; window.SetBinding(TitleProperty,new Binding("Title")); openDialogs.Push(window); window.Activated += (sender,args) => window.SizeToContent = SizeToContent.Manual; var result = window.ShowDialog(); openDialogs.Pop(); viewModelFactory.Release(viewModel); return result; })); } 基本上:我们创建一个窗口并使用视图模型. >沟通: 第一个Windows是Grid,第二个是编辑网格数据的Dialog. messenger.Register<EntityUpdated<FooClass>>(this,message => UpdateItem(message.Entity)); 在对话框中: messenger.Send(new EntityUpdated<FooClass>(subject)); 这样,我们就知道在编辑对话框中何时更新某些内容以刷新网格. 希望这对你有所帮助:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 适用于Windows Vista的Subversion客户端
- windows-server-2003 – 将共享文件夹和用户配置
- Windows 环境 Apache Http Server 2.2.25 安装教
- xaml – 如何在Windows Store Universal App(W8.
- Windows Azure上的ASP.NET应用程序性能问题
- windows – 为什么自定义光标图像显示不正确?
- windows-server-2003 – 将Active Directory从20
- 如何在Debian上编译DOS程序?
- win10家庭版升级到win10专业版和工作站版本的最新
- 服务器安全设置技术实例系列教程--服务器安全和性