使Dialog ViewModel绑定准备就绪,调用Dialog并在MVVM中从中返回数据

时间:2010-10-16 19:10:28

标签: wpf callback dialog viewmodel datacontext

您是否看到了一种更好的方法,我可以从Controller / ViewModel调用/ contstruct一个Dialog返回数据,并将DocumentViewModel设置为Dialog的DataContext?

问题是我无法在DocumentDetailWindow及其所属的UserControl中使用View第一种方法,因为我无法在 XAML 中将模型设置为DocumentViewModel的文档属性!

您如何解决这种情况?使Dialog正确绑定,调用对话框并将数据从它返回到LessonPlannerController,以便新文档可以保存在数据库中并添加到文档的绑定ObservableCollection中,以便再用一个Document刷新GUI。

LessonPlannerController /视图模型:

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();
 }

更新:

我甚至想过不做这个=&gt; documentViewModel.Document = new Document(); 因为当我可以这样做时,为什么我需要ViewModel中的模型:

IN REALITY 这些属性有NotifyPropertyChange ... public string DocumentName {get; set;} public string Keywords {get; set;}

然后我可以在DocumentViewModel中创建一个具有上述属性的Document实例,当执行Save命令然后通过Callback将Document传递给LessonPlannerControl等...当你必须订阅时,看起来View首先不起作用你的事件到一个方法。只有ViewModel才能首先运行。

你怎么看?我不应该使用ocumentViewModel.Document = new Document();

并在DocumentViewModel中创建这两个属性。嗯...但是为什么要重新创建它们是否已经在文档模型中?...

1 个答案:

答案 0 :(得分:0)