• windows phone (13) 样式继承


     在上一遍文章中已经介绍到可以在Resources集合中定义样式,我们也可以在一个样式上引用其他的样式,这就是继承的概念,使用方法是将引用的样式放置在Style中的BaseOn属性;这里使用到的是xaml标记扩展进行设置,比如这里定义的三个样式:

     <phone:PhoneApplicationPage.Resources>
            <Style x:Key="tbStyle" TargetType="TextBlock">
                <Setter Property="HorizontalAlignment" Value="Center"></Setter>
                <Setter Property="HorizontalAlignment" Value="Center"></Setter>
                <Setter Property="Foreground">
                    <Setter.Value>
                        <LinearGradientBrush>
                            <GradientStop Offset="0.2" Color="Brown"></GradientStop>
                            <GradientStop Offset="0.7" Color="DarkBlue"></GradientStop>
                        </LinearGradientBrush>
                    </Setter.Value>
                </Setter>
            </Style>
            <Style x:Key="fStyle" TargetType="TextBlock">
                <Setter Property="VerticalAlignment" Value="Bottom"></Setter>
            </Style>
            <Style x:Key="tStyle" TargetType="TextBlock" BasedOn="{StaticResource tbStyle}">
                <Setter Property="VerticalAlignment" Value="Top"></Setter>
            </Style>
        </phone:PhoneApplicationPage.Resources>

     从上面代码中我们可以看到第三个样式继承了第一个样式,然后第一个样式中我们定义的垂直方向的位置,第三个也定义了垂直方向的位置,然后我们从textblock中使用第三个样式

     <TextBlock x:Name="tbContent" Text="显示样式"  Style="{StaticResource tStyle}"  />

     效果如下:

     

    这说明第三个样式中的属性覆盖了第一个样式中的相同的属性 ;需要注意的是,上面三个样式是有先后顺序的,即下面的可以继承上面的,但是上面的不能继承下面的,系统会提示警告,找不到你要继承的样式;那么如果这三个样式中的样式进行级联继承会出现什么情况那:代码如下:

    <phone:PhoneApplicationPage.Resources>
            <Style x:Key="tbStyle" TargetType="TextBlock">
                <Setter Property="HorizontalAlignment" Value="Center"></Setter>
                <Setter Property="HorizontalAlignment" Value="Center"></Setter>
                <Setter Property="Foreground">
                    <Setter.Value>
                        <LinearGradientBrush>
                            <GradientStop Offset="0.2" Color="Brown"></GradientStop>
                            <GradientStop Offset="0.7" Color="DarkBlue"></GradientStop>
                        </LinearGradientBrush>
                    </Setter.Value>
                </Setter>
            </Style>
            <Style x:Key="tStyle" TargetType="TextBlock" BasedOn="{StaticResource tbStyle}">
                <Setter Property="VerticalAlignment" Value="Top"></Setter>
                <Setter Property="HorizontalAlignment" Value="Left"></Setter>
            </Style>
            <Style x:Key="fStyle" TargetType="TextBlock" BasedOn="{StaticResource tStyle}">
                <Setter Property="VerticalAlignment" Value="Bottom"></Setter>
            </Style>
           
        </phone:PhoneApplicationPage.Resources>

     然后textblock使用第三个样式

     <TextBlock x:Name="tbContent" Text="显示样式"  Style="{StaticResource fStyle}"  />

     效果就是这样子了

     

     所以我们可以这样总结,定义三个或更多个样式,如A,B,C 如果B继承A,C继承B,那么优先级是C>B>A,也可以这么说样式的继承是越往上优先级越低;


     给大家贴两篇文章的链接,共勉:

     
    作者:神舟龙
        
     

    新建的wp開發者群:42182428 

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    找控件的父类
    silverlight和wpf中暴露 给子类override
    Oracle PLSQL 记录
    C#之TopShelf启动Windows服务 原文链接:https://blog.csdn.net/qq_36664495/java/article/details/90600995
    Super socket 记录知识
    oracle 查找字符位置 开始按照长度截取
    转 acl 库是啥、主要包含哪些功
    转自 posted on 2015-05-18 11:50 LitDev https://www.cnblogs.com/New-world/p/4511543.html
    dtu server 编译错误
    iOS 杂笔-22(万年一遇~一张图片对代理的理解)
  • 原文地址:https://www.cnblogs.com/shenzhoulong/p/2454514.html
Copyright © 2020-2023  润新知