自分でMVVMを教えるためのアプリケーションを構築していて、Googling(といくつかの試行錯誤)でViewModelから2番目のウィンドウを開くことができますが、変数を1ページからもう片方。これは私のViewModelです。私は、だから私はこのMVVMLightを使用して変数を2番目のウィンドウに渡しますか?
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();
}
}
を知っている(または私は私が知っていると思う)これは、「ベストプラクティス」ではないかもしれないが、私は戻ってこれに来て、私のようにリファクタリングします私の見解では
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"));
}
MVVM paternとMVVM Lightをよりよく知ることができます。現在、最初のページ(VendorSelectViewModel)のViewModelから2番目のページ(InvoicerWindow)に変数を渡そうとしていますが、正しい構文を管理していません。
変数をあるページから次のページに渡すにはどうすればよいですか?
私は自分のクラスを作成するオプションが好きです。これは、ちょうど受信(登録)側で何が起こったのかを明示しているからです。イベントのタイプごとに1つのクラス。 SelectedVendorChangedNotificationMsg、SelectedVendorDeletedNotificationMsg ...などがあります。 – Fredrik