Wpf 另一个父UserControl对网格中多个子UserControl的事件处理
在我的WPF应用程序MVVM模式中,我试图处理来自多个UCs的事件,称之为主UC中的子UC,称之为父类布局管理器。每个子项都有一个事件告诉父项关闭子项。看起来是这样的: 父视图 | -儿童视图 | -儿童视图 | -等等。 和Josh Smith一样,我在close命令中使用了一个workspace viewmodel,ParentView和ChildView继承自WorkspaceViewModel,当然它自己也继承自ViewModelBase。现在的问题是,每当我关闭一个孩子。RequestClose事件列表由父视图而不是子视图调用。但该事件已注册到该子级。WorkspaceViewModel中的RequestClose怎么可能由子级而不是父级调用? 我必须在我的问题描述中添加以下内容:在这种情况下,我打破了MVVM模式,并在ParentView的代码隐藏中添加了我的ChildView:Wpf 另一个父UserControl对网格中多个子UserControl的事件处理,wpf,events,c#-4.0,mvvm,user-controls,Wpf,Events,C# 4.0,Mvvm,User Controls,在我的WPF应用程序MVVM模式中,我试图处理来自多个UCs的事件,称之为主UC中的子UC,称之为父类布局管理器。每个子项都有一个事件告诉父项关闭子项。看起来是这样的: 父视图 | -儿童视图 | -儿童视图 | -等等。 和Josh Smith一样,我在close命令中使用了一个workspace viewmodel,ParentView和ChildView继承自WorkspaceViewModel,当然它自己也继承自ViewModelBase。现在的问题是,每当我关闭一个孩子。Request
parentViewGrid.Children.Add(childView)
不幸的是,在这种情况下,很难遵循MVVM模式。原因如下:。我还没有真正解决那个问题。换句话说,就性能和复杂性而言,在这种情况下遵循MVVM模式是有利还是不利是值得怀疑的。
希望你能帮助我,理解我的问题。提前谢谢。
凯
像乔希·史密斯一样,我使用的是一个工作区
关闭命令的viewmodel和
ParentView和ChildView继承自
WorkspaceViewModel本身
从的ViewModelBase继承
当然
我认为您的视图不应该继承ViewModel类。如果有的话,视图应该将其DataContext属性设置为ViewModel
而且,我认为你的代码没有问题
parentViewGrid.Children.AddchildView
。。。只要您将视图代码保留在视图中,而不是直接与特定ViewModels中的特定ViewModel属性混淆/绑定
最后,这只是我吹毛求疵,但我不喜欢将事件命名为RequestClose,为什么不将其更改为标准关闭或至少CloseRequested