MVVM. Вызов метода контрола
От: cybosser Россия  
Дата: 16.05.11 05:34
Оценка:
Всем доброго времени суток!

Потребовалось разработать контрол для вывода видео с использованием паттерна MVVM.

Есть View с MediaElement и тремя кнопками (воспроизведение, стоп, пауза). Путь к файлу и команды кнопок биндятся к свойствам ViewModel.
В ViewModel есть три метода Play, Pause, Stop, в которых каким-то, не противоречащим идеям MVVM, образом нужно вызвать соответствующие методы MediaElement.

Каким образом осуществить подобные вызовы, оставаясь в рамках MVVM?
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. Мартин Фаулер
mvvm
Re: MVVM. Вызов метода контрола
От: cybosser Россия  
Дата: 16.05.11 05:48
Оценка:
В который раз убеждаюсь, что чтобы получить ответ достаточно задать вопрос вслух.

Команды Play, Pause и Stop не меняют состояние модели и поэтому им нечего делать во ViewModel.
Создал обработчики нажатия кнопок в code behind View.
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. Мартин Фаулер
Re[2]: MVVM. Вызов метода контрола
От: Codechanger Россия  
Дата: 16.05.11 06:15
Оценка: 1 (1)
Здравствуйте, cybosser, Вы писали:

C>В который раз убеждаюсь, что чтобы получить ответ достаточно задать вопрос вслух.


C>Команды Play, Pause и Stop не меняют состояние модели и поэтому им нечего делать во ViewModel.

C>Создал обработчики нажатия кнопок в code behind View.

Лучше уж команды создать
Re[3]: MVVM. Вызов метода контрола
От: MxMsk Португалия  
Дата: 16.05.11 06:21
Оценка: +1
Здравствуйте, Codechanger, Вы писали:

C>>Команды Play, Pause и Stop не меняют состояние модели и поэтому им нечего делать во ViewModel.

C>>Создал обработчики нажатия кнопок в code behind View.
C>Лучше уж команды создать
Команды здесь не подойдут, т.к. речь идет об обратном взаимодействии: посылки сигнала от модели к представлению. В таком случае лучше сделать во ViewModel события, на которые View сможет реагировать надлежащим образом.
Re[3]: MVVM. Вызов метода контрола
От: cybosser Россия  
Дата: 16.05.11 06:59
Оценка:
Здравствуйте, Codechanger, Вы писали:

C>Лучше уж команды создать


Команды нужны, когда некое событие в представлении должно привести к изменению состояния модели. В данном же случае меняется состояние контрола, поэтому команды тут ни к месту и код, относящийся к данному изменению должен располагаться в представлении.
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. Мартин Фаулер
Re[4]: MVVM. Вызов метода контрола
От: Codechanger Россия  
Дата: 16.05.11 07:01
Оценка:
Здравствуйте, MxMsk, Вы писали:

MM>Здравствуйте, Codechanger, Вы писали:


C>>>Команды Play, Pause и Stop не меняют состояние модели и поэтому им нечего делать во ViewModel.

C>>>Создал обработчики нажатия кнопок в code behind View.
C>>Лучше уж команды создать
MM>Команды здесь не подойдут, т.к. речь идет об обратном взаимодействии: посылки сигнала от модели к представлению. В таком случае лучше сделать во ViewModel события, на которые View сможет реагировать надлежащим образом.

Команды можно создать в контексте контрола, по идее.Я просто идейный сторонник команд и не люблю button_click.
Re[5]: MVVM. Вызов метода контрола
От: MxMsk Португалия  
Дата: 16.05.11 07:17
Оценка:
Здравствуйте, Codechanger, Вы писали:

C>Команды можно создать в контексте контрола, по идее.Я просто идейный сторонник команд и не люблю button_click.

Кстати, такие команды для MediaElement уже есть.
Re[3]: MVVM. Вызов метода контрола
От: cybosser Россия  
Дата: 16.05.11 07:38
Оценка:
Здравствуйте, Codechanger, Вы писали:

C>Лучше уж команды создать


А... Вы имеете ввиду вместо обработчиков нажатия во View использовать команды. Я не так понял Ваш пост.
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. Мартин Фаулер
Re: MVVM. Вызов метода контрола
От: Fortnum  
Дата: 17.05.11 09:03
Оценка:
Здравствуйте, cybosser, Вы писали:

C>Всем доброго времени суток!


C>Потребовалось разработать контрол для вывода видео с использованием паттерна MVVM.


C>Есть View с MediaElement и тремя кнопками (воспроизведение, стоп, пауза). Путь к файлу и команды кнопок биндятся к свойствам ViewModel.

C>В ViewModel есть три метода Play, Pause, Stop, в которых каким-то, не противоречащим идеям MVVM, образом нужно вызвать соответствующие методы MediaElement.

C>Каким образом осуществить подобные вызовы, оставаясь в рамках MVVM?


Есть такая штука. Вот здесь
Автор: Fortnum
Дата: 25.10.10
эту тему обсуждал в свое время. В результате сейчас использую комбинацию из Trigger/TriggerAction по типу тех, которые имеются во многих библиотеках. В частности по приведенной выше ссылке в Silverlight.FX, в Microsoft.Expression и, если мне не изменяет память, комбинация Trigger/TriggerAction появилась в последней, 4-й версии Prism.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.