Здравствуйте, cybosser, Вы писали:
C>В который раз убеждаюсь, что чтобы получить ответ достаточно задать вопрос вслух.
C>Команды Play, Pause и Stop не меняют состояние модели и поэтому им нечего делать во ViewModel. C>Создал обработчики нажатия кнопок в code behind View.
Здравствуйте, Codechanger, Вы писали:
C>>Команды Play, Pause и Stop не меняют состояние модели и поэтому им нечего делать во ViewModel. C>>Создал обработчики нажатия кнопок в code behind View. C>Лучше уж команды создать
Команды здесь не подойдут, т.к. речь идет об обратном взаимодействии: посылки сигнала от модели к представлению. В таком случае лучше сделать во ViewModel события, на которые View сможет реагировать надлежащим образом.
Потребовалось разработать контрол для вывода видео с использованием паттерна MVVM.
Есть View с MediaElement и тремя кнопками (воспроизведение, стоп, пауза). Путь к файлу и команды кнопок биндятся к свойствам ViewModel.
В ViewModel есть три метода Play, Pause, Stop, в которых каким-то, не противоречащим идеям MVVM, образом нужно вызвать соответствующие методы MediaElement.
Каким образом осуществить подобные вызовы, оставаясь в рамках MVVM?
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. Мартин Фаулер
Здравствуйте, Codechanger, Вы писали:
C>Лучше уж команды создать
Команды нужны, когда некое событие в представлении должно привести к изменению состояния модели. В данном же случае меняется состояние контрола, поэтому команды тут ни к месту и код, относящийся к данному изменению должен располагаться в представлении.
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. Мартин Фаулер
Здравствуйте, MxMsk, Вы писали:
MM>Здравствуйте, Codechanger, Вы писали:
C>>>Команды Play, Pause и Stop не меняют состояние модели и поэтому им нечего делать во ViewModel. C>>>Создал обработчики нажатия кнопок в code behind View. C>>Лучше уж команды создать MM>Команды здесь не подойдут, т.к. речь идет об обратном взаимодействии: посылки сигнала от модели к представлению. В таком случае лучше сделать во ViewModel события, на которые View сможет реагировать надлежащим образом.
Команды можно создать в контексте контрола, по идее.Я просто идейный сторонник команд и не люблю button_click.
Здравствуйте, Codechanger, Вы писали:
C>Команды можно создать в контексте контрола, по идее.Я просто идейный сторонник команд и не люблю button_click.
Кстати, такие команды для MediaElement уже есть.
Здравствуйте, cybosser, Вы писали:
C>Всем доброго времени суток!
C>Потребовалось разработать контрол для вывода видео с использованием паттерна MVVM.
C>Есть View с MediaElement и тремя кнопками (воспроизведение, стоп, пауза). Путь к файлу и команды кнопок биндятся к свойствам ViewModel. C>В ViewModel есть три метода Play, Pause, Stop, в которых каким-то, не противоречащим идеям MVVM, образом нужно вызвать соответствующие методы MediaElement.
C>Каким образом осуществить подобные вызовы, оставаясь в рамках MVVM?
эту тему обсуждал в свое время. В результате сейчас использую комбинацию из Trigger/TriggerAction по типу тех, которые имеются во многих библиотеках. В частности по приведенной выше ссылке в Silverlight.FX, в Microsoft.Expression и, если мне не изменяет память, комбинация Trigger/TriggerAction появилась в последней, 4-й версии Prism.