ViewModelBでViewModelAを参照するには、テンプレートサンプルのようにMVVMLightのViewModelLocatorを使用できます。
ViewModelLocatorクラス:
public class ViewModelLocator
{
static ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
// Register your services
//...
// Register your ViewModels
SimpleIoc.Default.Register<MainViewModel>();
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",
"CA1822:MarkMembersAsStatic",
Justification = "This non-static member is needed for data binding purposes.")]
public MainViewModel Main
{
get
{
return ServiceLocator.Current.GetInstance<MainViewModel>();
}
}
}
また、NodeViewModelでは、たとえば次のようにデフォルトのコマンドにアクセスできます。
public class NodeViewModel : ViewModelBase
{
private ViewModelLocator locator = new ViewModelLocator();
public RelayCommand NodeCommand
{
get
{
return locator.Main.DefaultCommand;
}
}
}
MVVMLightビジュアルスタジオテンプレートを使用してMVVMLightプロジェクトを作成すると、完全な小さなサンプルを見つけることができます。
お役に立てれば!