Silverlight: несколько проектов с одинаковыми файлами стилей - PullRequest
6 голосов
/ 15 февраля 2010

У меня есть несколько проектов Silverlight, в которых я хотел бы использовать одни и те же стили, цветовую схему и некоторые шаблонные объекты.

Как мне это сделать?

Ответы [ 2 ]

11 голосов
/ 16 февраля 2010

Один из способов сделать это - создать новую библиотеку классов silverlight, которая будет вашей общей темой / стилем, на которую будут ссылаться другие проекты silverlight. В этой сборке будет один или несколько ресурсов Resource Dictionary XAML-файлов, которые могут определять все ваши стили, кисти и шаблоны. Вы даже можете установить некоторые каскадные иерархии стилей, используя атрибут BasedOn класса Style.

Затем вы можете использовать MergedDictionaries для объединения этих стилей в ваше приложение на уровне App.xaml или на уровне страницы.

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/SharedThemeAssembly;component/MyStyles.xaml"/>
            ...other ResourceDictionaries to merge in...
        </ResourceDictionary.MergedDictionaries>
     </ResourceDictionary>
</Application.Resources>

Затем вы будете ссылаться на общие стили / кисти, как обычно, на любой другой StaticResource.

4 голосов
/ 16 февраля 2010

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

Другой подход - создать словарь ресурсов в одном проекте, а затем добавить этот же файл в другие проекты. Обратите внимание, что в диалоговом окне «Добавить существующий элемент» кнопка «Добавить» имеет небольшое выпадающее изображение, затем опускает его и затем выбирает «Добавить как ссылку».

Это оставляет слова в виде простого файла Xaml. Одно из преимуществ, которое я вижу в этом, состоит в том, чтобы фактически оставить файл словаря вне Xap и просто поместить его в папку clientBin (или в любую папку, в которой находится Xap). Этот подход позволяет всем Xaps совместно использовать единый словарь (так же, как первый подход), но позволяет настраивать Xaml без беспорядочных перестроений.

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