我的程序由TreeView
和两个在地面的contentPresenters
组成。主窗口TreeView
和每个contentPresenter
都有自己的viewModels。如何从其他视图模型调用主视图模型中的函数?
我想从TreeViewViewModel
调用mainWindowViewModel
中的函数。
我需要这样做,因为mainWindowViewModel
控制在contentPresenters
显示什么,我想手动更新显示。
我猜我会做这样的事情...
TreeViewViewModel
:
public class TreeViewViewModel
{
//Do I need to declare the MainWindowVM?
public TreeViewViewModel() { ... }
private void function()
{
//Command that affects display
//Manually call function in MainWindowVM to refresh View
}
}
我试图通过使用获得从TreeViewViewModel
访问MainWindowVM
:
public MainWindowViewModel ViewModel { get { return DataContext as MainWindowViewModel; } }
但它没有多大意义。因为MWVM不是TreeViewViewModel
的DataContext
。
这个答案唯一不同于我所做的是mainWindowViewModel是父视图模型,这是我试图调用。这是如何改变这个解决方案的? –
使用另一篇文章中的例子,你将在'MainWindowViewModel'类中有一个'ParameterViewModel_OnParameterChange'处理方法。唯一的区别是你在那个处理程序中的更新已经在你想要的地方(在父视图模型中),所以你不需要将这个'parameter'传递给另一个子视图模型......有效地,你可以使用相同的示例,但只需按照“ParameterViewModel_OnParameterChange”处理程序中的值进行操作,而不是将其传递给其他视图模型。 – Sheridan
这似乎是关于将值传递给其他ViewModels并更改参数值。我只想从另一个ViewModel中的'Command'/Function调用'mainWindowViewModel'中的函数。 MWVM中我调用的函数只是根据选择的内容更改'contentPresenter'中提供的内容。 –