新手学习如何正确使用IoC与wpf,mvvm,并跟踪CurrentView属性以与DataTemplates一起使用

时间:2012-10-04 16:32:42

标签: wpf mvvm views autofac

我正在尝试学习如何正确使用Autofac与wpf的接口和mvvm场景,并将我的mainWindow上的contentcontrol绑定到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不是具体的,我应该在这里实现一个接口,或者当你需要显示不同的视图时,有什么正确的方法来设置currentView,多个viewModels?我问,因为我想让Autofac在MainWindowViewModel构造函数中注入我的currentview。这可能吗?

 private baseViewModel currentView;
    public baseViewModel CurrentView
    {
        get
        {
            return currentView;
        }
        set
        {
            currentView = value;
            NotifyPropertyChanged(m => m.CurrentView);
        }
    }

在过去我使用过baseViewModels然后在视图上使用datatemplate但是我不知道这是否是一个合理的实现

0 个答案:

没有答案