您的位置:首页 > Web前端 > CSS

如何使用资源和样式调整控件外观

2012-05-17 22:52 405 查看
首先我们看一段xaml代码

<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资源,当解析器定位时就会抛出一个未找到资源的异常.

<phone:PhoneApplicationPage.Resources>
<Color x:Key="ButtonBackColor">
#FFFF5C5C
</Color>
<SolidColorBrush x:Key="ButtonBackBrush" Color="{StaticResource ButtonBackColor}"/>
</phone:PhoneApplicationPage.Resources>


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

<phone:PhoneApplicationPage.Resources>
<Style x:Key="MyBaseStyle" TargetType="TextBlock">
<Setter Property="Foreground" Value="{StaticResource PhoneFontFamilySemiLight}"/>
<Setter Property="FontSize" Value="{StaticResource PhoneFontSizeLarge}"/>
</Style>
<Style x:Key="MyTextBlockStyle" TargetType="TextBlock" BasedOn="{StaticResource MyBaseStyle}">
<Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
</Style>
</phone:PhoneApplicationPage.Resources>


你会注意到其中定义了一个TargetType特性,它用来确定可以应用该Style的控件类型.在本片段中被定义为应用所有TextBlock控件. Style还可以继承其他的Style.上面片段中使用BasedOn属性继承了名为MyBaseStyle的Style,得到MyBaseStyle中Foreground和FontSize并使用自己定义的Foreground覆盖父类属性.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐