您是否看到一种更好的方法,该方法如何从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