zoukankan      html  css  js  c++  java
  • 如何使用资源和样式调整控件外观

    首先我们看一段xaml代码

    1 <TextBlock x:Name="ApplicationTitle" Text="BlendPro" Style="{StaticResource PhoneTextNormalStyle}"/>

    在这里你可能注意带花括号设置了TextBlock的Style属性.这就意味着表达式在运行时进行了计算,属性被设置为计算后的值.本段xaml使用名为PhoneTextNormalStyle的StaticResource来设置Style属性.

    而加载XAML时, StaticResource的解析是通过沿XAML树查找所有资源字典中的资源来完成的.如果在当前页面的任何位置都找不到时,则会查找位于App.xaml文件中的应用程序范围的资源字典.

    资源字典仅是一个对象的集合,在应用程序中可以重复使用.在下面的代码片段中,可以看到两个在应用程序范围资源字典中定义资源:Color以及SolidColorBrush.每个XAML元素的x:key特性都声明了一个从代码中访问资源时所需的键.你还会注意到SolidColorBrush资源时间上引用了Color资源.这时资源的顺序很重要.如果先定义SolidColorBrush资源,当解析器定位时就会抛出一个未找到资源的异常.

    1 <phone:PhoneApplicationPage.Resources>
    2     <Color x:Key="ButtonBackColor">
    3         #FFFF5C5C
    4     </Color>
    5     <SolidColorBrush x:Key="ButtonBackBrush" Color="{StaticResource ButtonBackColor}"/>
    6 </phone:PhoneApplicationPage.Resources>

    接着我们在来看一段XAML片段

    1 <phone:PhoneApplicationPage.Resources>
    2     <Style x:Key="MyBaseStyle" TargetType="TextBlock">
    3         <Setter Property="Foreground" Value="{StaticResource PhoneFontFamilySemiLight}"/>
    4         <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeLarge}"/>
    5     </Style>
    6     <Style x:Key="MyTextBlockStyle" TargetType="TextBlock" BasedOn="{StaticResource MyBaseStyle}">
    7         <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
    8     </Style>
    9 </phone:PhoneApplicationPage.Resources>

    你会注意到其中定义了一个TargetType特性,它用来确定可以应用该Style的控件类型.在本片段中被定义为应用所有TextBlock控件. Style还可以继承其他的Style.上面片段中使用BasedOn属性继承了名为MyBaseStyle的Style,得到MyBaseStyle中Foreground和FontSize并使用自己定义的Foreground覆盖父类属性.

  • 相关阅读:
    winsows10 小技巧
    数组与智能指针
    卸载 VS2015
    Effective C++
    修改 git commit 的信息
    线程管理
    并发编程简介
    个别算法详解
    git 删除某个中间提交版本
    git 查看某一行代码的修改历史
  • 原文地址:https://www.cnblogs.com/qq278360339/p/2506960.html
Copyright © 2011-2022 走看看