Вы видите лучший способ, как я могу вызвать / создать диалоговое окно из Controller / ViewModel, вернуть из него данные и установить DocumentViewModel как DataContext из диалогового окна?
Проблема в том, что я не могу использовать Viewпервый подход в DocumentDetailWindow и принадлежащем ему UserControl, потому что я не могу установить Model в Свойство Document DocumentModel в XAML !
Как бы вы решили этот сценарий?Сделайте диалог должным образом привязанным, вызовите диалог и верните данные из него в LessonPlannerController, чтобы новый документ можно было сохранить в базе данных и добавить в связанную коллекцию документов ObservableCollection, чтобы графический интерфейс обновлялся еще одним документом.
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 ();потому что зачем мне Модель в a во ViewModel, когда я могу просто сделать это:
В РЕАЛЬНОСТИ эти свойства имеют NotifyPropertyChange ... public string DocumentName {get; set;}public string Keywords {get; set;}
, тогда я мог бы создать экземпляр Document с вышеуказанными свойствами в DocumentViewModel, когда команда Save выполнена, и затем передать Document через Callback в LessonPlannerControl и т. д. ...Кажется, что View first не работает, когда вам нужно подписать ваше событие на метод.Сначала работает только ViewModel.
Что ты думаешь?Не следует ли использовать ocumentViewModel.Document = new Document ();
и создать эти 2 свойства в DocumentViewModel.Хм ... но зачем создавать заново, если они уже есть в модели документа? ...