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 を使用しましたが、それが適切な実装であるかどうかはわかりません