zoukankan      html  css  js  c++  java
  • Style样式的四种使用(包括用C#代码动态加载资源文件并设置样式)

    Posted on 2012-03-23 11:21 祥叔 阅读(2886) 评论(6) 编辑 收藏

    Web开发中,我们通过CSS来控制页面元素的样式,一般常用三种方式:

    1.       内联样式表:即直接设置元素的style属性

    2.       嵌入样式表:即在html页面上写一个<style>……..</style> 代码段,然后设置元素的class 属性

    3.       外部样式表:即写一个独立的.css 文件,然后再html页面上引入该文件,然后设置元素的class属性

    具体如何操作,这里就不说了。不懂的去百度一把,绝对会出现一大坨。

     

    同样的,在WP7开发中,也有类似以上几种方式设置控件的样式——开发平台可以千差万别,编程思想都是大同小异的。

     一,内联样式:

    直接设置控件的Height WidthForegroundHorizontalAlignmentVerticalAlignment 等属性。以设置一个Botton控件的样式为例,如:

    复制代码
        <Grid x:Name="ContentPanel" >
                <Button Content="Button" Name="btnDemo" 
                        Height
    ="72" 
                        Width
    ="150" 
                        Foreground
    ="White" 
                        Background
    ="Blue" 
                        HorizontalAlignment
    ="Left" 
                        VerticalAlignment
    ="Top" 
                        Margin
    ="170,132,0,0" 
                        Grid.Row
    ="1" />
              </Grid>
    复制代码

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

     二,嵌入样式:

    在页面<phone:PhoneApplicationPage.Resources> 节点下添加样式,然后在需要的控件上设置Style 属性。还是以上面那个Botton控件为例。 

         1,在页面<phone:PhoneApplicationPage.Resources>节点下添加一个Key值叫“BtnStyle”的样式

    复制代码
      <phone:PhoneApplicationPage.Resources>
            <Style x:Key="BtnStyle"  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>
        </phone:PhoneApplicationPage.Resources>
    复制代码
          2, 设置Botton 控件的Style 属性为"{StaticResource BtnStyle}" 
       <Grid x:Name="ContentPanel" >
                <Button Content="Button" Name="btnDemo" 
                       Style
    ="{StaticResource BtnStyle}"
                        Margin
    ="170,132,0,0"  />
       </Grid>

    解释一下,TargetType="Button" 指定了该样式适用于Botton类型的控件Key="BtnStyle" 如果不设置该值,则该样式将适用于所有的Botton 控件,而设置了其值为“BtnStyle,则只用于设置了  Style="{StaticResource BtnStyle}" Botton控件。这就好比CSS中的元素选择器和类选择器。

     

    这种方式可以使得单个页面上的控件能够复用一个样式,比第一种方式面向对象了一步。 

    三,外联样式:

    1,新建一个.xaml资源文件,/Resources/BtnStyle.xaml

    2, BtnStyle.xaml文件里编写样式代码

    复制代码
    BtnStyle.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="BtnStyle" 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>

                 或者普通页面的<phone:PhoneApplicationPage.Resources>

                 或者用户控件的 <UserControl.Resources>  节点下

                添加相应的ResourceDictionary,配置引用BtnStyle.xaml:

    复制代码
    app.xaml:
        <Application.Resources> 
            
             <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="Resources/BtnStyle.xaml"/>
                <!--<ResourceDictionary Source="Resources/BtnStyle2.xaml"/>
                    <ResourceDictionary Source="Resources/BtnStyle3.xaml"/>
    -->
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
            
        </Application.Resources>
    或者MainPage.xaml:
    <phone:PhoneApplicationPage.Resources>

            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="Resources/BtnStyle.xaml"/>
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>

    </phone:PhoneApplicationPage.Resources>
    复制代码

     <ResourceDictionary.MergedDictionaries>节点下可以添加多个资源文件

    这种方式相比前面两种使得样式和结构又更进一步分离了。

    App.xam引用,是全局的,可以使得一个样式可以在整个应用程序中能够复用。在普通页面中引用只能在当前页面上得到复用。


         4, 
    设置Botton 控件的Style 属性为"{StaticResource BtnStyle}" 和上面的一样。

     四,用C#代码动态加载资源文件并设置样式

         1,新建资源文件:同上面的12两步。

        2,在后台编写代码           

         ResourceDictionary resourceDictionary = new ResourceDictionary();

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

  • 相关阅读:
    shi_tomasi特征点,GFTTDetector
    特征点总结(按features2d.hpp源码由上至下总结)
    经过一年时间的沉淀 再次回首 TCP Socket服务器编程 (二)
    构建嵌入式小型Linux系统
    老赵书托(3):深入理解计算机系统
    #define与typedef区别
    Linux下快速静态编译Qt以及Qt动态/静态版本共存
    tcpdump示例
    linux绑定多个ip(转载)
    Linux下eclipse及mysql安装,c++访问mysql数据库
  • 原文地址:https://www.cnblogs.com/changbaishan/p/3361627.html
Copyright © 2011-2022 走看看