1

wpf とのインターフェイスと mvvm シナリオで Autofac を適切に使用し、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 を設定する適切な方法は何ですか? Autofac に現在のビューを MainWindowViewModel コンストラクターに挿入してもらいたいのでお願いします。これは可能ですか?

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

過去に、ビューで baseViewModels を使用してから datatemplates を使用しましたが、それが適切な実装であるかどうかはわかりません

4

0 に答える 0