@lvr

Какова стратегия разработки White-Label приложения для Windows Phone?

Есть задача разработать приложения для Windows Phone, которые будут в пределах погрешности одинаковы по логике, но могут иметь разное визуальное оформление. Думаю, как построить приложение, чтобы при одинаковой кодовой базе обеспечить разные "шкурки".
Отличия шкурок будут заключаться в первую очередь в разных цветах элементов, разных картинках и разных текстах, но было бы неплохо предусмотреть возможность варьировать расположение элементов.
Общее решение вижу в виде связки Class Library, в которой будет размещаться логика, и собственно приложения с кастомизацией.

Вижу следующие варианты:

1. Размещение в Class Library ViewModel-ей, а в приложении - XAML и минимальный code-behind
Что смущает в варианте:
а) то, что XAML-разметка будет плодиться в приложениях, по большей части при помощи copy-paste.
б) наличие минимального code-behind (которого может оказаться немало), который тоже будет копипастится

2. Создание базового класса для страниц в Class Library
По сути вариант 1, но позволяет избавится от Code-Behind в приложении. Из минусов - обращаться к контролам из базового класса (естественно, предполагая, что они есть в разметке) нужно будет поиском, что снижает прозрачность кода

3. Использование стилизации
В этом случае базовая разметка XAML будет находится в Class Library, а в приложении - только ресурсы, описывающие внешний вид страниц и контролов (Control Templates).
Вариант выглядит заманчиво, но я не нашёл способа в приложении перекрыть стили, применённые к страницам в подключаемой Class Library. Кроме того, вариант даёт меньшую гибкость в вариациях кастомизаций.

Понимаю, что вопрос неоднозначный, и плюсы одних вариантов являются минусами других, но всё же хотел бы услышать мнение специалистов. Может кто с таким сталкивался. Или кто может предложить другой вариант?
  • Вопрос задан
  • 2798 просмотров
Решения вопроса 1
MikhailD
@MikhailD
Developer
Вынесите все стили, которые нужно подменять, в ResourceDictionary.
Далее вы можете иметь один проект, в котором будет весь ваш код. Когда нужно сделать очередное приложение, замените проектные файлы (.csproj, манифест, StoreAssociation, StoreKey) и файл ResourceDictionary. Таким образом для нового приложение вам понадобиться сделать только проектные файлы и словарь с новыми стилями.
Если таких приложений у вас много, можно сделать простую билд-систему, которая будет на основе конфига сама генерировать проектные файлы и собирать приложения с помощью компилятора (без VisualStudio)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы