3
我尝试使用MVVM模式重写我的应用程序。MVVM ViewModel和静态方法
我有一个窗口,显示与静态方法类似这样的不同对象相关文件:
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);
我没有找到关于ViewModels和静态方法的任何信息。虚拟机可以创建自己的实例并显示其视图(这里是一个窗口)?
或者是更好的方式将对象作为参数传递给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模式?
Thx提前。
IDialogService或IMessageBoxSer恶习是我见过这个问题解决的最常见的方式。它也是可测试的。 +1 – 2010-10-26 12:49:57