Должны ли анимационные реплики быть в моем представлении модели?MVVM - PullRequest
2 голосов
/ 09 июня 2011

Я выполняю рефакторинг LOB-приложения silverlight для использования MVVM ..

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

Это данные, относящиеся к представлению, и поскольку модель представления должна быть несколько безголовой (не зависящей от объектов вида, таких как анимация) ..

Где должен быть этот код?

Спасибо

Ответы [ 2 ]

2 голосов
/ 09 июня 2011

Короче говоря, вы можете настроить свой анимационный триггер на триггер данных - никакой кодовой поддержки не требуется. Другие технологии View (не WPF или Silverlight) потребуют добавления события View Data Complete в ViewModel.

MVVM - это просто MVP с интеграцией WPF / Silverlight, чтобы упростить сигнализацию подобных вещей. Я полагаю, что WPF включает триггер данных, который может использоваться для запуска анимации. Это позволяет отказаться от добавления события «загрузка данных завершена» во ViewModel. Вы МОЖЕТЕ добавить событие сейчас, но, возможно, вы тратите время впустую, подготавливая код для совместимости MVP, который может никогда не понадобиться.

Цель MVVM и MVP - сделать представление презентации взаимозаменяемым. Подумайте, как WinForms, WinCE, текстовый терминал (или даже текст в речь) должен информировать пользователя о загрузке данных. Каждая технология будет вести себя по-разному. Следовательно, действие по изменению пользовательского интерфейса должно находиться в выделенном коде представления, когда не используются WPF или Silverlight.

2 голосов
/ 09 июня 2011

DataTrigger, DataTrigger! Мое королевство для DataTrigger!

В WPF вы можете запускать анимацию на основе данных вашей ViewModel. В Silverlight они используют VSM ... Я до сих пор не удосужился узнать, как это делается. Очевидно, Blend Behavior SDK (который можно загрузить отдельно) обеспечивает приближение DataTrigger, при котором сбои VSM переходят к поведению на основе привязки. Этот вопрос о переполнении стека (не принятый ответ, но ответ от Mike Post) показывает, как это сделать ... и последующий ответ показывает, как это сделать без Blend.

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