Wpf MvvmLight良好实践:通过ViewModel显示表单
我是WPF、MVVM的新手。现在,我一直在研究MVVM灯。我有些困惑。我感谢你们所有人的帮助。提前感谢您阅读这篇文章Wpf MvvmLight良好实践:通过ViewModel显示表单,wpf,mvvm,mvvm-light,Wpf,Mvvm,Mvvm Light,我是WPF、MVVM的新手。现在,我一直在研究MVVM灯。我有些困惑。我感谢你们所有人的帮助。提前感谢您阅读这篇文章 我们是否可以完全删除视图背后的代码(例如:在某些简单的情况下,调用.xaml-->中的某个地方的InitializeComponent())不再需要View.xaml.cs) 我的项目有很多视图,需要多少定位器? 我打算为每个视图制作单独的定位器。我想知道,如果我在app.xml中注册所有定位器,是否所有视图都在用户运行应用程序后立即初始化和注册?如果是,是否对性能不好 主要问题
public void OnImport()
{
ImportForm importForm = new ImportForm();
importForm.ShowDialog();
}
这很简单,但我想知道这种方式是否遵循MVVM的范例
public MainForm()
{
InitializeComponent();
Messenger.Default.Register<NotificationMessage>(this, (nm) =>
{
if (nm.Sender == this.DataContext)
{
if (nm.Notification == "OnImport")
{
ImportForm importForm = new ImportForm();
importForm.ShowDialog();
}
}
});
}
public MainForm()
{
初始化组件();
Messenger.Default.Register(此(nm)=>
{
if(nm.Sender==this.DataContext)
{
如果(nm.Notification==“OnImport”)
{
ImportForm ImportForm=新的ImportForm();
importForm.ShowDialog();
}
}
});
}
通过这种方式,我必须在代码隐藏-->中编写一些代码,这有问题吗
上述两种解决方案都可以正确地完成上述场景,但我不知道哪一种更好,或者有没有真正正确的解决方案
再次感谢您对这个长问题的耐心
单击
事件,因为它与视图相关。它与任何逻辑都没有关系,因此将其保留在代码中是我的最佳解决方案(b)顺便说一句,如果单击按钮执行某些操作,例如连接到数据库,则如果条件为真,则显示一个对话框。在本例中,我将使用Messenger使View和ViewModel彼此分离