Вот мой приближаясь
В вашем App.xaml вы хотите объявить MergedDictionaries
элемент, как это ..
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles\Colors.xaml" />
<ResourceDictionary Source="Styles\Brushes.xaml" />
<ResourceDictionary Source="Styles\Typeography.xaml" />
<ResourceDictionary Source="Styles\ModuleAStyles.xaml />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Как вы можете видеть, я, как правило, имеет несколько отдельных файлов здесь для цветов (цвета, если вы правильно написали), кисти, типография, а затем I обычно используйте один дополнительный для каждого модуля. Используйте более одного, если это большое приложение, иначе у вас будет слишком много материала в одном файле, и его будет сложно поддерживать. Вам просто нужно использовать ваше лучшее суждение здесь и посмотреть, что подходит вам лучше всего.
В Typeography.xaml, что я ссылающегося в этом объединенном словаре я объявлен стиль под названием ApplicationTitle, как это ...
<!--Application Title-->
<Style TargetType="{x:Type TextBlock}"
x:Key="ApplicationTitle">
<Setter Property="VerticalAlignment"
Value="Center" />
<Setter Property="HorizontalAlignment"
Value="Center" />
<Setter Property="FontFamily"
Value="Georgia" />
<Setter Property="Foreground"
Value="{StaticResource ResourceKey=FlatGradientLightest}" />
<Setter Property="FontSize"
Value="24" />
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect BlurRadius="5"
Color="#333"
Opacity=".3" />
</Setter.Value>
</Setter>
</Style>
Вы заметите, что в этом стиле я снова ссылающегося другой ресурс, называемый «FlatGradientLightest», с расширением разметки StaticResource
. Этот ресурс существует в файле Brushes.xaml ...
<!--Flat Diagonal Gradient Lightest-->
<LinearGradientBrush x:Key="FlatDiagonalGradientLightest"
StartPoint="0,0"
EndPoint="1,1">
<GradientStop Color="{StaticResource ResourceKey=Light}"
Offset="0" />
<GradientStop Color="{StaticResource ResourceKey=Lightest}"
Offset="1" />
</LinearGradientBrush>
И снова это ссылки Цвета «Light» и «легкий». Они существуют в файле Colors.xaml ...
<Color x:Key="Light"
A="255"
R="190"
G="190"
B="190" />
<Color x:Key="Lightest"
A="255"
R="250"
G="250"
B="250" />
Что важно здесь порядок я указал словари ресурсов в App.xaml. Если бы я переместил Typeography.xaml в начало списка, это вызовет время выполнения, поскольку в то время, когда он загружал этот стиль, его зависимости не существовали.
Поскольку WPF/SL смотрят вверх, чтобы разрешить ресурсы (как сказал Muad'Dib), вы можете просто использовать эти ресурсы в своих модулях, как если бы они были объявлены локально. Поэтому в одном из моих модулей у меня есть TextBlock
, объявленный вот так ...
<TextBlock Text="Menu Module Loaded" Style="{StaticResource ResourceKey=ApplicationTitle}" />
Это TextBlock
теперь использует стиль «» ApplicationTitle в Typeography.xaml, который загружает это Foreground
кисть из «FlatGradientLightest» LinearGradientBrush
в Brushes.xaml, который, в свою очередь, загружает два цвета из Color
ресурсов в цветах. xaml-файл.
Kinda cool right?
Надеюсь, что это поможет.
Silverlight 3 напрямую поддерживает браузеры –