我有一個關於虛擬機通信的問題。從另一個視圖模型訪問MainViewModel
這是我在C#/ WPF應用程序中的代碼。在我的MainWindow.xam中,我有一個按鈕。 點擊這個按鈕, 我需要從另一個ViewModel中訪問和修改ProductList集合。 我該如何做到這一點?
public List<ProductInfo> ProductList { get; private set; }
private MainWindow m_mvWindow = null;
public MainWindowViewModel(MainWindow window)
{
this.m_mvWindow = window;
}
MainWindow.xaml.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new MainWindowViewModel(this);
}
}
感謝。
您使用的是MVVM框架嗎?我使用MVVM Light,對於這樣的問題,我使用Messenger類(中介模式的實現)。 「其他」VM將訂閱消息,並且MainViewModel將(在處理按鈕單擊的命令中)發送消息。 – Misza
你爲什麼要這樣做?如果你的MainWindow有一個按鈕,該按鈕應該從你的MainWindowViewModel觸發一個'ICommand',並且可以通過服務修改數據。如果數據在另一個視圖中顯示,那麼該視圖和「MainWindow」應該從一個公共源獲取它們的數據,並且該源應該通知它們更新。 _你確實不需要將視圖模型或命令傳遞給其他視圖模型或命令,它們就是爲了視圖._ – Haukinger