WPF中的Style多文件解决方案(XAML篇)
http://chr1syu.spaces.live.com/Blog/cns!6A09CB72C98E0121!195.entry
WPF中的Style简单笔记(XAML篇)
- 创建资源
- 在Solution Explorer中直接为Project可以Add一个叫做Resource Dictionary的Item。这个Item会为你的Project加入一个以标签<ResourceDictionary>为Root的XAML文件。
- 在上述文件中通过使用Style、SolidColorBrush等等可以定义各种资源。
如:<SolidColorBrush x:Key="NormalBrush" Color="#FCF3D6" />
这样就定义了一个Key为NormalBrush的笔刷资源了。 - 如果要定义Style,就稍微麻烦些。Style可以为其附上Key也可以不附。但如果没有Key则一般有TargetType来说明是针对特定Type的默认Style。例子如下:
<Style x:Key="ButtonFocusVisual">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Border>
<Rectangle Margin="2" StrokeThickness="1"
Stroke="Orange" StrokeDashArray="1 2" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style> - 对于Style来说还可以定义其Trigger来让控件根据一些属性的变化而变化外表,例子如下:
<Style TargetType="Button">
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="FocusVisualStyle"
Value="{StaticResource ButtonFocusVisual}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border
x:Name="Border" CornerRadius="2"
BorderThickness="1"
Background="{StaticResource NormalBrush}"
BorderBrush="{StaticResource NormalBorderBrush}">
<ContentPresenter
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
RecognizesAccessKey="True"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsKeyboardFocused" Value="true">
<Setter TargetName="Border"
Property="BorderBrush"
Value="{StaticResource DefaultedBorderBrush}" />
</Trigger>
............
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
- 应用资源
- 首先需要将上述资源加入到App中去。打开App.xaml文件,然后在标签<Application.Resources>中添加入前面定义好的xaml文件。如:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="resCommon.xaml" />
.........
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources> - 然后就可以在任何一个XAML或者C#的Code中调用了,那些没有名字只有TargetType的将会被设置为相应Type的默认Style。应用方法如下:
Style="{StaticResource ResourceKeyName}"
- 首先需要将上述资源加入到App中去。打开App.xaml文件,然后在标签<Application.Resources>中添加入前面定义好的xaml文件。如: