Как правильно организовать ресурсы XAML в Silverlight? - PullRequest
3 голосов
/ 18 ноября 2011

У меня есть некоторые проблемы с файлами ресурсов в моем модульном приложении.

У меня есть Infrastructure.DLL и некоторые пользовательские элементы управления внутри этой DLL.Эти элементы управления, использующие шаблоны из themes/generic.xaml Проблема, которая у меня возникла - Blend не распознает эти ресурсы.Visual Studio поддерживает.

В идеале я хотел бы, чтобы внутри generic.xaml были стили для других элементов управления cusom, а также стили для других элементов управления где-нибудь в общей библиотеке, на которые я могу ссылаться из своих модулей.

Мне также нужно, чтобы Expression Blend и VS работали правильно.

Как мне организовать решение, чтобы это произошло?

PS.Важный!WPF отличается, но меня интересует решение Silverlight

1 Ответ

4 голосов
/ 22 ноября 2011

Вам просто нужно создать ресурс времени разработки для вашего generic.xaml, чтобы позволить Blend его распознать. Взгляните на этот пост .

В каждом из ваших модулей вы создаете ResourceDictionary вот так.

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <ResourceDictionary.MergedDictionaries>
Source="/xxx.Silverlight.Controls;component/Themes/Generic.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

Кроме того, в вашем файле .csproj вам необходимо добавить это. Обратите внимание, что обычно этот фрагмент кода генерируется автоматически Blend, поэтому, если ваш ResourceDictionary создан автоматически, вам не нужно делать следующее.

<Page Include="Design\DesignTimeResources.xaml" Condition="'$(DesignTime)'=='true' OR ('$(SolutionPath)'!='' AND Exists('$(SolutionPath)') AND '$(BuildingInsideVisualStudio)'!='true' AND '$(BuildingInsideExpressionBlend)'!='true')">
  <Generator>MSBuild:Compile</Generator>
  <SubType>Designer</SubType>
  <ContainsDesignTimeResources>true</ContainsDesignTimeResources>
</Page>

Дизайн - это папка, которую я создал для хранения DesignTimeResources.xaml. У меня почти такая же структура, как у тебя. :)

...