我通常會創建一個獨立的樣式項目,我從項目中引用,我想要樣式。該造型的項目有一個固定的結構是這樣的:
對於每一個控制,我創建了一個造型ResourceDictionary
。例如,對於我的按鈕:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="PrimaryButtonStyle" TargetType="Button">
</Style>
<Style x:Key="ToolbarButton" TargetType="Button">
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Margin" Value="3"/>
<Setter Property="Background" Value="Transparent"></Setter>
</Style>
</ResourceDictionary>
在一個主ResourceDictionary
,我合併所有其他字典,在這種情況下,在文件IncaDesign.xaml,您可以在圖片中看到上面:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:Commons.Controls;assembly=Commons">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Converter/Converter.xaml" />
<ResourceDictionary Source="Styles/Button.xaml" />
<ResourceDictionary Source="BitmapGraphics/Icons.xaml" />
</ResourceDictionary.MergedDictionaries>
<!-- Default Styles -->
<Style TargetType="Button" BasedOn="{StaticResource PrimaryButtonStyle}"></Style>
</ResourceDictionary>
注意我是如何定義自動應用的默認樣式的,除非您另有指定。在每一個窗口或控件中,你想要的風格,你只需要參考這一個ResourceDictionary
。注意源的定義,這是大會(/Commons.Styling;component...
)
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Commons.Styling;component/IncaDesign.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
默認樣式會自動現在可以設置一個參考,如果你想明確地訪問資源,你可以做到這一點,利用StaticResource
。
<Viewbox Height="16" Width="16" Margin="0,0,10,0">
<ContentControl Content="{StaticResource FileIcon32}" />
</Viewbox>
這是在我看來,這適用於非常複雜的解決方案,包括模塊化解決方案,例如使用PRISM建立了非常好的解決方案。
您可以創建ResourceDictionary並將其添加到ClassLibrary中。您必須在App.xaml上引用它,並且可以在許多項目中使用該庫 – 2013-03-06 14:11:55