您是否看到一种更好的方法,该方法如何从Controller / ViewModel调用/构造对话框,并从中返回数据并将DocumentViewModel设置为对话框的DataContext?

问题是我无法在DocumentDetailWindow及其所属的UserControl中使用“查看优先”方法,因为无法在XAML中将模型设置为DocumentViewModel的Document属性!

您将如何解决这种情况?使Dialog正确绑定,调用Dialog并将其返回数据到LessonPlannerController,以便可以将新Document保存在数据库中并添加到绑定的ObservableCollection of Documents中,从而用另外一个Document刷新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中需要一个Model:

实际上,这些属性具有NotifyPropertyChange ...
公共字符串DocumentName {get; set;}
公共字符串关键字{get; set;}

然后在执行Save命令时,可以在DocumentViewModel中创建具有上述属性的Document实例,然后通过回调将Document传递给LessonPlannerControl等...似乎必须先订阅事件才能使用View first一个方法。然后,只有ViewModel首先起作用。

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

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

最佳答案

这些回答您的问题了吗?
WPF MVVM dialog example
要么
http://www.codeproject.com/KB/architecture/MVVM_Dialogs.aspx

10-08 09:04