1

我正在尝试学习如何正确使用 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,但我不知道这是否是一个合理的实现

4

0 回答 0