WPF中的Style多檔案解決方案(XAML篇)http://chr1syu.spaces.live.com/Blog/cns!6A09CB72C98E0121!195.entryWPF中的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}"