我对 mvvm 和 mvvm light 还很陌生,但我想我理解它的一般概念。我不明白的是,如果我想打开一个新窗口,但该窗口需要来自调用者的数据,将这些数据放入新窗口的最佳做法是什么?如果我将数据传递给构造函数,那么这意味着我需要后面代码中的代码将其传递给视图模型。我不能使用消息传递,因为它不是基本数据。
问问题
8263 次
1 回答
7
一种流行的选择是使用将创建视图/视图模型并显示新视图的服务类。您的视图模型构造函数和/或方法/属性可以从调用者接收数据,然后视图将绑定到视图模型,然后再将其显示在屏幕上。
这是一个非常简单的 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
}
于 2013-01-07T15:08:00.180 回答