准备好 Dialog ViewModel 绑定,调用 Dialog 并在 MVVM 中从它返回数据
Posted
技术标签:
【中文标题】准备好 Dialog ViewModel 绑定,调用 Dialog 并在 MVVM 中从它返回数据【英文标题】:Make a Dialog ViewModel binding ready, call Dialog and return data from it in MVVM 【发布时间】:2011-04-26 09:47:19 【问题描述】:您是否看到了一种更好的方法,我可以从 Controller/ViewModel 调用/构造一个对话框,从它返回数据并将 DocumentViewModel 设置为对话框的 DataContext?
问题是我无法在 DocumentDetailWindow 及其所属的 UserControl 中使用 View first 方法,因为我无法在 XAML 中将 Model 设置为 DocumentViewModel 的 Document 属性!
您将如何解决这种情况?使 Dialog 可正确绑定,调用 dialog 并将其中的数据返回到 LessonPlannerController 以便新文档可以保存在数据库中并添加到已绑定的文档 ObservableCollection 中,这样 GUI 就会刷新一个文档。
LessonPlannerController/ViewModel:
private void OnAddDocument()
DocumentDetailWindowaddDocumentWindow = new DocumentDetailWindow();
DocumentViewModeldocumentViewModel = new DocumentViewModel();
documentViewModel.Document = new Document();
documentViewModel.Repository = new LessonPlannerRepository();
documentViewModel.SaveDocumentDelegate += new Action<Document>(OnSaveDocument);
addDocumentWindow.DataContext = documentViewModel;
addDocumentWindow.ShowDialog();
更新:
我什至考虑过不做这个 => documentViewModel.Document = new Document(); 因为当我可以这样做时,为什么我需要在 ViewModel 中的模型:
在现实中这些属性有一个 NotifyPropertyChange... 公共字符串 DocumentName get;set; 公共字符串关键字 get;set;
然后我可以在 DocumentViewModel 中创建一个具有上述属性的 Document 实例,当执行 Save 命令时,然后通过 Callback 将 Document 传递给 LessonPlannerControl 等......当您必须订阅时,View first 似乎不起作用你的事件到一个方法。只有 ViewModel 首先工作。
你怎么看?我应该不使用 ocumentViewModel.Document = new Document();
并在 DocumentViewModel 中创建这两个属性。嗯...但是如果它们已经在文档模型中,为什么要重新创建呢?...
【问题讨论】:
+1 与自己的迷你对话 :) 【参考方案1】:这些回答你的问题吗? WPF MVVM dialog example 要么 http://www.codeproject.com/KB/architecture/MVVM_Dialogs.aspx
【讨论】:
以上是关于准备好 Dialog ViewModel 绑定,调用 Dialog 并在 MVVM 中从它返回数据的主要内容,如果未能解决你的问题,请参考以下文章
模型更改时刷新 ViewModel 的所有属性的数据绑定的好方法