我正在尝试学习如何正确使用 Autofac 与 wpf 接口和 mvvm 场景,并将我的 mainWindow 上的内容控件绑定到 mainViewModel 的“CurrentView”属性,但我不知道我是否应该这样做具体的 BaseViewModel 类,或者我是否应该将 CurrentView 属性作为接口?我想在我的 MainWindowViewModel 构造函数中设置 CurrentView 属性。
简单定位器:
public class ViewModelLocator
{
public IContainer Container { get; set; }
public IMainWindowViewModel MainWindowViewModel
{
get
{
return Container.Resolve<IMainWindowViewModel>();
}
}
public IOtherPageViewModel OtherPageViewModel
{
get
{
return Container.Resolve<IOtherPageViewModel >();
}
}
}
坐在我的 MainWindow.xaml
<ContentControl
Content="{Binding Path=CurrentView}"
Grid.Row="0"
VerticalContentAlignment="Stretch"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
HorizontalContentAlignment="Stretch" >
</ContentControl>
MainWindowViewModel *这是我关心的问题,baseViewModel 不应该是一个具体的,我应该在这里实现一个接口,或者当你需要为多个 viewModels 显示不同的视图时,设置 currentView 的正确方法是什么?我问是因为我想让 Autofac 在 MainWindowViewModel 构造函数中注入我的当前视图。这可能吗?
private baseViewModel currentView;
public baseViewModel CurrentView
{
get
{
return currentView;
}
set
{
currentView = value;
NotifyPropertyChanged(m => m.CurrentView);
}
}
过去我在视图上使用了 baseViewModels 和 datatemplates,但我不知道这是否是一个合理的实现