总结一下WPF中Style样式的引用方法。
一、内联样式:
直接设置控件的Height、Width、Foreground、HorizontalAlignment、VerticalAlignment等属性。
以设置一个Botton控件的样式为例,如:
这种方式比较简单,但是代码不能复用。
二、嵌入样式: 在页面<Window.Resources>节点下添加样式,然后在需要的控件上设置Style属性。还是以Botton控件为例。 1、在页面<Window.Resources>节点下添加一个Key值叫“myBtnStyle”的样式2、 设置Botton控件的Style属性为"{StaticResource BtnStyle}"
TargetType="{x:Type Button}"指定了该样式适用于Botton类型的控件,Key="myBtnStyle"如果不设置该值,则该样式将适用于所有的Botton控件,而设置了其值为“myBtnStyle”,则只用于设置了 Style="{StaticResource myBtnStyle}"的Botton控件。这就好比CSS中的元素选择器和类选择器。
这种方式可以使得单个页面上的控件能够复用一个样式,比第一种方式面向对象了一步。 三、外联样式: 1、新建一个.xaml资源文件,如/Theme/Style.xaml 2、 在Style.xaml文件里编写样式代码 Style.xaml:3、在App.xaml文件的<Application.Resources>
或者普通页面的<Window.Resources> 或者用户控件的 <UserControl.Resources> 节点下 添加相应的ResourceDictionary,配置引用Style.xaml: app.xaml:或者MainWindow.xaml:
<ResourceDictionary.MergedDictionaries>节点下可以添加多个资源文件
这种方式相比前面两种使得样式和结构又更进一步分离了。 在App.xaml引用,是全局的,可以使得一个样式可以在整个应用程序中能够复用。在普通页面中引用只能在当前页面上得到复用。 4、设置Botton控件的Style属性为"{StaticResource myBtnStyle}" 和上面的一样。四、用C#代码动态加载资源文件并设置样式 1、新建资源文件:同上面的1,2两步。 2、在后台编写代码首先,将我们自定义的样式加载到应用程序的资源字典中。
ResourceDictionary resourceDictionary =newResourceDictionary();Application.LoadComponent(resourceDictionary, new Uri("/PhoneApp1;component/Resources/BtnStyle.xaml", UriKind.Relative));Application.Current.Resources.MergedDictionaries.Add(resourceDictionary);
其次,为控件添加样式。
this.btnDemo.SetValue(Button.StyleProperty, Application.Current.Resources["BtnStyle"]);