zoukankan      html  css  js  c++  java
  • WPF 之 style文件的引用

     

      总结一下WPF中Style样式的引用方法。

    一、内联样式:

      直接设置控件的Height、Width、Foreground、HorizontalAlignment、VerticalAlignment等属性。

      以设置一个Botton控件的样式为例,如:

    <Button Content="Button" Name="btnDemo" 
        Height="72" Width="150" Foreground="White" Background="Blue" HorizontalAlignment="Left" 
        VerticalAlignment="Top"  Margin="170,132,0,0"  />

      这种方式比较简单,但是代码不能复用。

    二、嵌入样式:
      在页面<Window.Resources>节点下添加样式,然后在需要的控件上设置Style属性。还是以Botton控件为例。 
      1、在页面<Window.Resources>节点下添加一个Key值叫“myBtnStyle”的样式

    复制代码
    <Window.Resources>
      <Style x:Key="myBtnStyle" TargetType="{x:Type Button}">
        <Setter Property="Height" Value="72" />
        <Setter Property="Width" Value="150" />
        <Setter Property="Foreground" Value="Red" />
        <Setter Property="Background" Value="Black" />
        <Setter Property="HorizontalAlignment" Value="Left" />
        <Setter Property="VerticalAlignment" Value="Top" />
      </Style>
    </Window.Resources>
    复制代码

      2、 设置Botton控件的Style属性为"{StaticResource BtnStyle}"

    <Button Content="Button" Name="btnDemo" 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:

    复制代码
    <ResourceDictionary
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:System="clr-namespace:System;assembly=mscorlib">
      <Style x:Key="myBtnStyle" TargetType="Button">
        <Setter Property="Height" Value="72" />
        <Setter Property="Width" Value="150" />
        <Setter Property="Foreground" Value="White" />
        <Setter Property="Background" Value="Blue" />
        <Setter Property="HorizontalAlignment" Value="Left" />
        <Setter Property="VerticalAlignment" Value="Top" />
      </Style>
    </ResourceDictionary>
    复制代码

      3、在App.xaml文件的<Application.Resources>
      或者普通页面的<Window.Resources>
      或者用户控件的 <UserControl.Resources> 节点下
      添加相应的ResourceDictionary,配置引用Style.xaml:
      app.xaml:

    复制代码
    <Application.Resources> 
      <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
          <ResourceDictionary Source="/应用名称;component/Theme/Style.xaml"/>
        </ResourceDictionary.MergedDictionaries>
      </ResourceDictionary>
    </Application.Resources>
    复制代码

      或者MainWindow.xaml:

    复制代码
    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Theme/BtnStyle.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>
    复制代码

      <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"]);

     https://www.cnblogs.com/xinaixia/p/5512535.html

  • 相关阅读:
    【转】Shell编程基础篇-上
    【转】inotify+rsync实现实时同步
    Spring
    jdk,jre,tommcat配置问题
    Java前后台开发
    前端组件学习(一)
    报表工具进阶(二)
    查询时异步刷新问题--用到了ajax
    学习jaspersoft/JasperReport
    利用SQLYog操作数据库mysql
  • 原文地址:https://www.cnblogs.com/robertyao/p/10149063.html
Copyright © 2011-2022 走看看