【发布时间】:2010-10-26 11:22:24
【问题描述】:
我尝试使用 MVVM 模式重写我的应用程序。
我有一个窗口可以使用如下静态方法显示不同对象的相关文档:
public partial class ShowRelatedDocuments : Window
{
private ShowRelatedDocuments()
{
InitializeComponent();
}
public static void ShowRelatedDocument(A objA)
{
ShowRelatedDocuments srd = new ShowRelatedDocuments();
srd.HandleA(objA);
srd.ShowDialog();
}
public static void ShowRelatedDocument(B objB)
{
ShowRelatedDocuments srd = new ShowRelatedDocuments();
srd.HandleB(objB);
srd.ShowDialog();
}}
有没有办法让这些方法像这样保持静态?
ShowRelatedDocumentsVM.ShowRelatedDocument(A objA);
ShowRelatedDocumentsVM.ShowRelatedDocument(B objB);
我没有找到任何关于 ViewModel 和静态方法的信息。虚拟机可以创建自己的实例并显示他的视图(这里是一个窗口)吗?
或者像这样将对象作为参数传递给VM的构造函数的更好方法是什么?
public ShowRelatedDocumentsVM(A objA)
{
HandleA(obj A)
ShowRelatedDocuments srd = new ShowRelatedDocuments();
srd.DataContext = this;
srd.ShowDialog();
}
public ShowRelatedDocumentsVM(B objB)
{
HandleB(objB);
ShowRelatedDocuments srd = new ShowRelatedDocuments();
srd.DataContext = this;
srd.ShowDialog();
}
或者两种方式都错了,因为我在视图模型中创建视图而违反了 MVVM 模式?
提前致谢。
【问题讨论】: