zoukankan      html  css  js  c++  java
  • windows phone xaml文件中元素及属性(10)

    Textblock xaml文件和隐藏文件

    在设计界面的时候我们可以通过xaml中进行设计,这种设计是所见即所得的,很是方便,由于xaml中使用到的元素都是其实质都是类文件,比如textblock类,textblock在xaml文件中展示的特性都是该类的属性及方法;所以我们也可以在隐藏文件完成对可视化元素的构建,例如我们实现如下的效果:

    那么我们在MainPage.xaml 部分文件代码如下:

     <!--ContentPanel - 在此处放置其他内容-->
            <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <TextBlock x:Name="txtName" Text="Name" VerticalAlignment="Center" HorizontalAlignment="Center" ></TextBlock>
            </Grid>

    同样的效果我们可以在MainPage隐藏文件进行编写如下:

    View Code
      //PhoneApplicationPage加载时
            private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
            {
                //和xaml中显示的位置相同
                TextBlock txtblk = new TextBlock();
                txtblk.Name = "txtName";
                txtblk.Text = "Name";
                txtblk.VerticalAlignment = VerticalAlignment.Center;
                txtblk.HorizontalAlignment = HorizontalAlignment.Center;
                ContentPanel.Children.Add(txtblk);
                
            }

     此事件需要在xaml文件PhoneApplicationPage类中添加loaded事件,此外我们还会发现我们利用了名为ContentPanel的Grid元素的Children属性将textblock加入到Grid内部,其实Grid是将textblock添加到自身的Children集合中;

    属性的继承性

    属性的继承是silverlight的一个特性,它可以将PhoneAppplicationPage中的一些属性(大致就是Forground属性,以及和字体相关的 属性,如FontFamily,Fronsize,FronStyle,FrontWeight,fronStretch)继承到 MainPage中,在下面的案例中使用的是在PhoneAppplicationPage中设置属性

    FontStyle="Italic"

     我们会看到这样的效果:

     我们可以看到,在MainPage中的所有字体都变为斜体字,下面在显示为“Name”的textblock元素改为:

    <TextBlock x:Name="txtName" FontStyle="Normal" Text="Name" VerticalAlignment="Center" HorizontalAlignment="Center" ></TextBlock>

     再看效果变为如下:

     

     所以从中可以总结属性的优先级:①本地设置的优先级最高;②继承来的属性优先级居中;③默认的最低

    属性元素语法

    元素及其属性的不同书写方式,比如上面我们实现显示"Name"的textblock元素,在xaml中可以有一下不同的几种书写格式:

    最原始的写法①:

    <TextBlock x:Name="txtName" FontStyle="Normal" Text="Name" VerticalAlignment="Center" HorizontalAlignment="Center" ></TextBlock>

    写法②:

                <TextBlock>
                    <TextBlock.Name>txtName</TextBlock.Name>
                    <TextBlock.Text>Name</TextBlock.Text>
                    <TextBlock.FontStyle>Normal</TextBlock.FontStyle>
                    <TextBlock.VerticalAlignment>Center</TextBlock.VerticalAlignment>
                    <TextBlock.HorizontalAlignment>Center</TextBlock.HorizontalAlignment>
                </TextBlock>

     两种写法实现的效果一直,可以看出写法②更有层次感,但是这样写法比较累赘,适当的时候可以采用第二种写法;其中第二种写法中的Name,Text,FontStyle,VerticalAlignment,HorizontalAlignmen称之为属性元素,即用xml元素表示一个.NET属性,另外需要注意的是属性元素标签内不能含有其他任何东西;

    颜色和画刷

    我们把名为txtName的元素添加属性Foreground更改为

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <TextBlock x:Name="txtName" FontStyle="Normal" Text="Name" 
              VerticalAlignment="Center" HorizontalAlignment="Center" 
                       Foreground="#FF0000"
                       ></TextBlock>

     可以看到效果:这里使用的是红绿蓝的字符串表示的颜色,每种颜色值都是范围从00到FF占用一个字节的16进制数,其中00表示全透明,FF表示不透明;对于scRGB色彩空间,其值设置在0到1之间,我们可以这样定义

    <TextBlock x:Name="txtName" FontStyle="Normal" Text="Name" 
              VerticalAlignment="Center" HorizontalAlignment="Center" 
                       Foreground="sc#0.1,0.2,0.3"
                       ></TextBlock>

     效果:,注意sRGB并不等同于十六制颜色,但是两者可以相互转换;关于sRGB和scRGB的区别可参考http://www.sudu.cn/info/index.php?op=article&id=275494

     按照上面的属性元素语法我们可以这样写:

                <TextBlock>
                    <TextBlock.Name>txtName</TextBlock.Name>
                    <TextBlock.Text>Name</TextBlock.Text>
                    <TextBlock.FontStyle>Normal</TextBlock.FontStyle>
                    <TextBlock.VerticalAlignment>Center</TextBlock.VerticalAlignment>
                    <TextBlock.HorizontalAlignment>Center</TextBlock.HorizontalAlignment>
                    <TextBlock.Foreground>
                        <SolidColorBrush>
                            <Color>sc#0.1,0.2,0.3</Color>
                        </SolidColorBrush>
                    </TextBlock.Foreground>
                </TextBlock>

     另外Foreground属性是可以通过可视化树继承,但是Background属性不可继承的,Background属性默认为null,null与Background属性设置为透明Transparent相同;

    作者:神舟龙
        
     

    新建的wp開發者群:42182428 

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    WCF三种通信方式
    Linux发布WebApi
    Supervisor Linux程序进程管理
    Centos安装Mongodb
    本地网址连不上远程mysql问题
    .Net之垃圾回收算法
    .Net之托管堆资源分配
    Centos7+ASP.Net Core 运行
    ASP .Net Core 使用 Dapper 轻型ORM框架
    转载 Jquery中AJAX参数详细介绍
  • 原文地址:https://www.cnblogs.com/shenzhoulong/p/2450336.html
Copyright © 2011-2022 走看看