要在 ViewModel B 中引用 ViewModel A,您可以像在模板示例中一样使用 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;
}
}
}
当您使用 MVVM Light 视觉工作室模板创建 MVVM Light 项目时,您可以找到一个完整的小示例。
希望这可以帮助!