MVVM - Совместное использование / повторное использование ViewModels между Silverlight и WPF

Можно ли обмениваться моделями просмотра на разных платформах - WPF / Silverlight? Я начал с того, чтобы помещать свои виртуальные машины в отдельную сборку, и вскоре пришел к ICommand, что заставило меня задать этот вопрос? Возможно ли это, и если да, то стоит ли это делать? У нас есть возможность в будущем создать клиентское приложение для WPF и Silverlight, поэтому мне бы не хотелось дублировать виртуальные машины для обоих.


person justin coon    schedule 24.03.2011    source источник


Ответы (2)


Потенциально вы можете сделать это с помощью Portable Library Tools CTP. Это позволяет вам нацеливаться на всю структуру, а также на Silverlight в одном библиотечном проекте.

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

person Reed Copsey    schedule 24.03.2011
comment
Я думаю, что вариант Portable Library будет вашим лучшим выбором, но он заставит вас кодировать с наименьшим общим знаменателем. На самом деле, для ViewModels это не должно быть проблемой, так как вы должны абстрагировать любые идиосинкразии, связанные с View, от View, а любые особенности платформы - до уровня сервиса. - person Joel Cochran; 25.03.2011

[Почти] все, что возможно в Silverlight, возможно и в WPF. Поэтому, если у вас есть виртуальная машина, работающая в Silverlight, она [в основном] будет работать с WPF.

С другой стороны, WPF предлагает более широкие возможности, поэтому вы можете захотеть использовать их в своей части кода WPF. Вы можете использовать обычные #ifdef Silverlight-подобные уловки.

Также может оказаться полезным этот вопрос.

person Vlad    schedule 24.03.2011