windows phone xaml文件中元素及属性(10)

简介: 原文:windows phone xaml文件中元素及属性(10)Textblock xaml文件和隐藏文件 在设计界面的时候我们可以通过xaml中进行设计,这种设计是所见即所得的,很是方便,由于xaml中使用到的元素都是其实质都是类文件,比如textblock类,textblock在xaml...
原文: 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隐藏文件进行编写如下:

img_405b18b4b6584ae338e0f6ecaf736533.gif 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相同;

 

 

目录
相关文章
|
3月前
|
存储 UED Windows
Windows服务器上大量文件迁移方案
Windows服务器上大量文件迁移方案
214 1
|
3月前
|
iOS开发 MacOS Windows
Mac air使用Boot Camp安装win10 ,拷贝 Windows 文件时出错
Mac air使用Boot Camp安装win10 ,拷贝 Windows 文件时出错
|
2月前
|
存储 开发框架 .NET
Windows IIS中asp的global.asa全局配置文件使用说明
Windows IIS中asp的global.asa全局配置文件使用说明
54 1
|
2月前
|
Java Windows
如何在windows上运行jar包/JAR文件 如何在cmd上运行 jar包 保姆级教程 超详细
本文提供了一个详细的教程,解释了如何在Windows操作系统的命令提示符(cmd)中运行JAR文件。
1213 1
|
4月前
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
145 1
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
2月前
|
程序员 Windows
程序员必备文件搜索工具 Everything 带安装包!!! 比windows自带的文件搜索快几百倍!!! 超级好用的文件搜索工具,仅几兆,不占内存,打开即用
文章推荐了程序员必备的文件搜索工具Everything,并提供了安装包下载链接,强调其比Windows自带搜索快且占用内存少。
52 0
|
3月前
|
Windows
7-3|windows删除目录下的所有文件的命令
7-3|windows删除目录下的所有文件的命令
|
3月前
|
Windows
Windows7电脑启动时提示文件winload.exe无法验证其数字签名,错误代码0xc0000428的解决方法
Windows7电脑启动时提示文件winload.exe无法验证其数字签名,错误代码0xc0000428的解决方法
|
4月前
|
Java Windows 容器
【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
|
4月前
|
Python Windows
【Azure 应用服务】App Service For Windows 环境中部署Python站点后,如何继续访问静态资源文件呢(Serving Static Files)?
【Azure 应用服务】App Service For Windows 环境中部署Python站点后,如何继续访问静态资源文件呢(Serving Static Files)?