Постоянство данных MVVM в Silverlight - PullRequest
1 голос
/ 28 марта 2012

Я пытаюсь справиться с паттерном MVVM, Silverlight и XAML.

Я нахожусь на этапе, когда у меня есть главная страница, которая загружает просмотры во фрейм.Каждое представление может привязываться к своей модели представления в xaml, а затем привязываться к данным модели представления.Я также запускаю команды для таких вещей, как нажатие кнопок, события сетки и т. Д. (Например, SelectionChanged).

Когда пользователь перемещается с помощью навигационного меню главной страницы, в рамку загружается новое представление, что создаетэкземпляр его собственной модели представления.

Мой вопрос заключается в том, что моя модель представления для одного представления вызывает метод WCF для некоторых данных, а затем отображает это в сетке через привязку к ObservableCollection, хранящемуся в модели представления.Если изменения сделаны, он просто вызывает метод сохранения WCF и передает обратно эту ObservableCollection.Однако, когда пользователь дважды щелкает строку в сетке, мне нужно сохранить некоторую информацию и сохранить ее для следующего просмотра (так как двойной щелчок также переключается на другое представление).Такая информация, как «идентификатор выбранного элемента».

В результате у меня получился «модельный» набор классов, которые отделены от моделей представления и содержат такие вещи, как состояние приложения, выбор пользователя и т. Д. Модели представления могут хранить здесь, как «идентификатор выбранного элемента».На мой взгляд ... "Модель" была почти всем на другой стороне вызова WCF?Я не думал, что мне следует создавать еще один «слой» модели здесь?

Я не знаю, что не так с этим подходом, но он чувствует себя неправильно.

Может кто-нибудь пролить свет на то, как я долженделать это?Или, если это хороший подход?Я неправильно понял схему здесь?

Спасибо за любую помощь!

Ответы [ 2 ]

1 голос
/ 13 апреля 2012

Я думаю, что ты слишком обдумал это.Я думаю, что это нормальный подход.Я думаю, что вполне приемлемо иметь «модель интерфейса», если хотите.Каждое приложение обычно имеет вспомогательные классы.Пока вы используете подход «разделения проблем», ваше приложение будет обслуживаемым.Мои приложения Silverlight имеют область «Модель», которая отслеживает состояние приложения по мере необходимости.Эта область модели также имеет классы, специфичные для пользовательского интерфейса.- мои два цента.

0 голосов
/ 28 марта 2012

Если существуют такие рабочие процессы, как - вы устанавливаете 'selection' в одной модели представления и знаете, какая модель представления будет использовать это значение позже, - вы, вероятно, можете использовать подход EventAggregator и опубликовать событие в другой модели представления с необходимыми параметрами, без необходимости хранить это значение отдельно где-то.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...