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

Textblock xaml文件和隐藏文件

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

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

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

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

  //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>                <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="" 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相同;

windows phone xaml文件中元素及属性(10)的更多相关文章

  1. 错误:“ResourceDictionary”根元素需要 x:Class 特性来支持 XAML 文件中的事件处理程序。请移除 MouseLeftButtonDown 事件的事件处理程序.

    原文:错误:"ResourceDictionary"根元素需要 x:Class 特性来支持 XAML 文件中的事件处理程序.请移除 MouseLeftButtonDown 事件的事 ...

  2. php的form中元素name属性相同时的取值问题

    php的form中元素name属性相同时的取值问题:修改元素的名称,在名称后面加上 '[]',然后取值时即可得array()数组. 一.以复选框为例: <html> <head> ...

  3. Android:关于声明文件中android:process属性说明

    笔者在学习Android Service组件的过程中碰到了一个问题,就是在Android应用的声明文件Manifest.xml中有时候会对相关的服务标签设置一个android:process=&quo ...

  4. Android中布局文件中使用onClick属性

    安卓开发中,布局文件中的控件有一个属性,是onClick,例如:           <Button             android:id="@+id/button1" ...

  5. Java - 得到项目中properties属性文件中定义的属性值

    public static String getPropertiesValue(String fileName, String key) {   return ResourceBundle.getBu ...

  6. Struts2 | struts.xml文件中使用method属性和通配符简化action标签和Action处理类的编写

    转自:https://www.jianshu.com/p/310e89ee762d 在Struts2框架中,我们知道基本的Action标签只能实现一个url请求对应一个Action处理类.那么我们如果 ...

  7. HTML中元素 标签 属性

    HTNL中元素是以开始标签开始 结束标签结尾的 如:<p>this is a paragraph </p> <p>是开始标签   </p>是结束标签  ...

  8. *.hbm.xml映射文件的元素及属性

    1. 每个持久化对象都需要提供一个以类名命名的映射文件,映射文件需要放在和po类同一目录下. 2. 如下是wefepo的映射文件: <hibernate-mapping> <clas ...

  9. WPF之通过EventTrigger修改模板中元素的属性

    前言:对于此操作,我只想说是微软的神经,还是我的笨蛋.为什么EventTrigger就不能像Trigger那样直接设置Property以及Value就对属性进行操作,而必须要放一个Action,而默认 ...

随机推荐

  1. 在VC资源文件中加入声音资源

    本文介绍如何在VC资源文件中加入自己的声音资源,使自己的应用程序可以播放声音. 1.首先用文本编辑器(如记事本)打开资源文件(.rc文件) 在最后加入自己的声音资源,如下IDW WAVE " ...

  2. Visual Studio 控件命名规范(很详细)

    VS 控件命名规范 Type Prefix Example Array arr arrShoppingList Boolean bln blnIsPostBack Byte byt bytPixelV ...

  3. c++ try throw catch

    c++ try throw catch 这三者联合使用 , try { statement list; } catch( typeA arg ) { statement list; } catch( ...

  4. MySQL 通配符学习总结

    MySQL 通配符 SQL您同意使用模式匹配"_"无论单个字符相匹配,和"%"匹配随意数目字符(包含零个字符). 在 MySQL中.SQL的模式缺省是忽略大写和 ...

  5. 类型自动转换引起的误解——QString可以赋值数字1,也能直接与0比较,真是昏倒!

    看以下代码,能编译通过: void MainWindow::on_pushButton_clicked() { QString str = "test"; ) { QMessage ...

  6. JMS学习(三)ActiveMQ Message Persistence(转)

    1,JMS规范支持两种类型的消息传递:persistent and non-persistent.ActiveMQ在支持这两种类型的传递方式时,还支持消息的恢复.中间状态的消息(message are ...

  7. POJ2599+POJ2082【最大矩形面积】

    题目链接:http://poj.org/problem?id=2559 题目链接:http://poj.org/problem?id=2082 这一类题目的解法,不知自己闲着没事就做了两个. 果然压栈 ...

  8. window应用移植到Linux下(应用移植)

     配置QT的环境变量,这台电脑à属性à高级系统设置à高级à环境变量à系统变量àpathàC:\Qt\Qt5.3.0\5.3\mingw482_32\bin;C:\Qt\Qt5.3.0\Tools\ ...

  9. IE 加速插件之 Google Chrome Frame

    前言 IE 8 及以下版本的速度较慢. 特别是前端的js 和 css 内容较多时尤为突出. 就笔者的开发经验来说GWT, Ext JS, raphael , draw2d 等开发的系统在IE下使用是相 ...

  10. 如何在cocos2d项目中enable ARC

    如何在cocos2d项目中enable ARC 基本思想就是不支持ARC的代码用和支持ARC的分开,通过xcode中设置编译选项,让支持和不支持ARC的代码共存. cocos2d是ios app开发中 ...