最佳实践打开一个新的窗口在MVVM光与参数
本文关键字:窗口 MVVM 参数 一个 最佳 | 更新日期: 2023-09-27 17:50:51
我对mvvm和mvvm light相当陌生,但我认为我理解它的一般思想。我不明白的是,如果我想打开一个新窗口,但该窗口需要从调用者的数据,什么是获得该数据到新窗口的最佳实践?如果我把数据传递给构造函数,那就意味着我需要在后面的代码中把数据传递给视图模型。我不能用短信,因为它不是基本数据。
一种流行的选择是使用一个服务类来创建视图/视图模型并显示新视图。你的视图模型构造函数和/或方法/属性可以从调用者那里接收数据,然后在显示在屏幕上之前将视图绑定到视图模型。
下面是一个非常简单的DialogService实现:
public class DialogService : IDisposable
{
#region Member Variables
private static volatile DialogService instance;
private static object syncroot = new object();
#endregion
#region Ctr
private DialogService()
{
}
#endregion
#region Public Methods
public void ShowDialog(object _callerContentOne, object _callerContentTwo)
{
MyDialogViewModel viewmodel = new MyDialogViewModel(_callerContentOne, _callerContentTwo);
MyDialogView view = new MyDialogView();
view.DataContext = viewmodel;
view.ShowDialog();
}
#endregion
#region Private Methods
#endregion
#region Properties
public DialogService Instance
{
get
{
if (instance == null)
{
lock (syncroot)
{
if (instance == null)
{
instance = new DialogService();
}
}
}
return instance;
}
}
#endregion
}