C# 将所有视图模型存储在CoreViewModel中以提供彼此之间的通信是一种好方法吗?
将所有视图模型存储在CoreViewModel中以提供彼此之间的通信是一种好方法吗?或者更好地使用MVVM轻型框架或类似的东西?(我希望没有参数构造函数)C# 将所有视图模型存储在CoreViewModel中以提供彼此之间的通信是一种好方法吗?,c#,wpf,mvvm,C#,Wpf,Mvvm,将所有视图模型存储在CoreViewModel中以提供彼此之间的通信是一种好方法吗?或者更好地使用MVVM轻型框架或类似的东西?(我希望没有参数构造函数) Ed Plunkett建议了一种我使用的方法,但我将尝试详细说明 如果我有一个应用程序,它有几个我想要使用的子控件(例如选项卡控件中的每个选项卡页一个控件),那么MainWindow视图将绑定到XAML中主视图的视图模型: <Window.DataContext> <MainWindowViewModel/>
Ed Plunkett建议了一种我使用的方法,但我将尝试详细说明 如果我有一个应用程序,它有几个我想要使用的子控件(例如选项卡控件中的每个选项卡页一个控件),那么MainWindow视图将绑定到XAML中主视图的视图模型:
<Window.DataContext>
<MainWindowViewModel/>
</Window.DataContext>
其中_mediator是我用来在视图模型之间传递消息的对象。您应该有一个父/子视图模型的“树”。“定位器”是一种反模式。为什么需要无参数构造函数?嗨,我想要无参数构造函数,因为我在CoreViewModel的foreach(openView中的ViewBase openView)中有这个方法,如果(openView.GetType().Equals(view)){currentView=openView;currentView.Reset();return;}currentView=Activator.CreateInstance(视图)作为ViewBase;'这很难理解。代码真的需要加入这个问题。
ViewBase
是您的viewmodel库吗?接口是实现的,而不是继承的,按照惯例,接口名称应以I
开头。如果您的viewmodel有一个视图集合(如果它甚至知道“视图”这样的东西甚至存在),那么您已经陷入了困境。那是个非常糟糕的主意。你为什么这么做?哦,对不起,这不是接口,这是一个抽象类。
<Window.DataContext>
<MainWindowViewModel/>
</Window.DataContext>
<Control DataContext="{Binding ExampleControlViewModel}"/>
(new ExampleWindow() { DataContext = new ExampleWindowViewModel(_mediator) }).ShowDialog();