我是 WPF、MVVM 的新手。现在,我一直在研究 MVVM Light。我有些困惑。我感谢你们所有人的帮助。提前感谢您查看这篇文章。
我们可以绝对删除 View 后面的代码吗(例如:在 .xaml 中的某处调用 InitializeComponent() --> 在某些简单情况下不再需要 view.xaml.cs)。
我有很多观点洞察我的项目,需要多少定位器?我打算为每个视图制作单独的定位器。而且我想知道如果我在 app.xml 中注册所有定位器,是否所有视图都在用户运行应用程序后立即初始化和注册?如果是,是否不利于性能?
主要问题:我有一个场景:我有很多形式:例如:
- MainForm:这是应用程序调用的第一个表单。
- ImportForm:当用户单击 Import(来自 MainForm)时调用
假设:我确实完成了与绑定相关的所有内容(例如按钮 Import --> RelayCommand(OnImport)) 实现此场景的最佳实践是什么?1. 只需执行初始化并显示 ImportForm 如下所示:
public void OnImport()
{
ImportForm importForm = new ImportForm();
importForm.ShowDialog();
}
这很简单,但我想知道这种方式是否遵循 MVVM 的范式?
所以,我做了一些研究并做了另一种方式,比如:
public void OnImport() { //// 只发送消息 Messenger.Default.Send(new NotificationMessage(this, "OnImport")); }
在代码后面:MainForm.xaml.cs
public MainForm()
{
InitializeComponent();
Messenger.Default.Register<NotificationMessage>(this, (nm) =>
{
if (nm.Sender == this.DataContext)
{
if (nm.Notification == "OnImport")
{
ImportForm importForm = new ImportForm();
importForm.ShowDialog();
}
}
});
}
这样,我必须在后面的代码里面写一些代码 --> 有问题吗?
上述两种解决方案都可以正确完成上述场景,但我混淆了哪个更好,或者那里有任何真正正确的解决方案?
再次感谢您对长问题的耐心等待。