我正在構建一個應用程序來教自己MVVM和一些Google搜索(以及一些試用錯誤)我已經設法達到了可以從ViewModel打開第二個窗口的程度,但不能將變量從一個頁面傳遞到另一個。這是我的ViewModel。使用MVVMLight將變量傳遞給第二個窗口?
public VendorSelectViewModel()
{
Ping ping = new Ping();
PingReply pingresult = ping.Send("192.168.1.10");
if (pingresult.Status.ToString() == "Success")
{
LoadVendorsAsync();
}
else
{
LoadVendors();
}
NextCommand = new RelayCommand(NextWindow);
}
public ICommand NextCommand { get; private set; }
void NextWindow()
{
Console.WriteLine(selectedVendor.VendorName);
Messenger.Default.Send(new NotificationMessage("NextWindow"));
}
在我看來,我有這個
public VendorSelectWindow()
{
InitializeComponent();
_vm = new Biz.Invoicer.VendorSelectViewModel();
DataContext = _vm;
Messenger.Default.Register<NotificationMessage>(this, NotificationMessageReceived);
}
private void NotificationMessageReceived(NotificationMessage msg)
{
if (msg.Notification == "NextWindow")
{
var invoicerWindow = new InvoicerWindow();
invoicerWindow.Show();
}
}
所以我知道(或我想我知道)這可能不是一個「最佳實踐」,但我會回來這一點,並重構爲我更好地瞭解MVVM模板和MVVM Light。目前我正在嘗試將第一頁(VendorSelectViewModel)的ViewModel變量傳遞給第二頁(InvoicerWindow),但是我沒有設法修改語法。
我需要做什麼才能將變量從一頁傳遞到下一頁?
我更喜歡創建我自己的類的選項,因爲它明確發生在接收(註冊)方面。每種類型的事件一個類。 SelectedVendorChangedNotificationMsg,SelectedVendorDeletedNotificationMsg ...等等。 – Fredrik