我的程序由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'中提供的內容。 –