Подготовьте привязку Dialog ViewModel, вызовите Dialog и верните данные из нее в MVVM - PullRequest
3 голосов
/ 16 октября 2010

Вы видите лучший способ, как я могу вызвать / создать диалоговое окно из 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.Хм ... но зачем создавать заново, если они уже есть в модели документа? ...

1 Ответ

0 голосов
/ 21 марта 2011
...