windows phone xaml文件中元素及属性(10)
原文: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隐藏文件进行编写如下:


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)的更多相关文章
- 错误:“ResourceDictionary”根元素需要 x:Class 特性来支持 XAML 文件中的事件处理程序。请移除 MouseLeftButtonDown 事件的事件处理程序.
原文:错误:"ResourceDictionary"根元素需要 x:Class 特性来支持 XAML 文件中的事件处理程序.请移除 MouseLeftButtonDown 事件的事 ...
- php的form中元素name属性相同时的取值问题
php的form中元素name属性相同时的取值问题:修改元素的名称,在名称后面加上 '[]',然后取值时即可得array()数组. 一.以复选框为例: <html> <head> ...
- Android:关于声明文件中android:process属性说明
笔者在学习Android Service组件的过程中碰到了一个问题,就是在Android应用的声明文件Manifest.xml中有时候会对相关的服务标签设置一个android:process=&quo ...
- Android中布局文件中使用onClick属性
安卓开发中,布局文件中的控件有一个属性,是onClick,例如: <Button android:id="@+id/button1" ...
- Java - 得到项目中properties属性文件中定义的属性值
public static String getPropertiesValue(String fileName, String key) { return ResourceBundle.getBu ...
- Struts2 | struts.xml文件中使用method属性和通配符简化action标签和Action处理类的编写
转自:https://www.jianshu.com/p/310e89ee762d 在Struts2框架中,我们知道基本的Action标签只能实现一个url请求对应一个Action处理类.那么我们如果 ...
- HTML中元素 标签 属性
HTNL中元素是以开始标签开始 结束标签结尾的 如:<p>this is a paragraph </p> <p>是开始标签 </p>是结束标签 ...
- *.hbm.xml映射文件的元素及属性
1. 每个持久化对象都需要提供一个以类名命名的映射文件,映射文件需要放在和po类同一目录下. 2. 如下是wefepo的映射文件: <hibernate-mapping> <clas ...
- WPF之通过EventTrigger修改模板中元素的属性
前言:对于此操作,我只想说是微软的神经,还是我的笨蛋.为什么EventTrigger就不能像Trigger那样直接设置Property以及Value就对属性进行操作,而必须要放一个Action,而默认 ...
随机推荐
- DM8168硬件平台
DM8168硬件平台 作者:Marvin_wu TMS320DM8168是一款多核SoC,它集成了包含ARM Cortex A8.DSP C674X+.M3 VIDEO.M3 VPSS等处理器.DS ...
- Delphi 10.1 柏林更新内容简译
新的 SDKTransform.exe 支持转换 Object-C 或 C++ 头文件到Delphi. 修改了对话框的接口,分成了同步和异步两种: http://blog.qdac.cc/?p=380 ...
- 引导加载程序:GRUB
计算机在启动的时候,首先由BIOS中的程序执行自检,自检通过后,就根据CMOS的配置找到第一个可启动磁盘的MBR中的Boot Loader程序(一般在启动盘的第一个物理扇区,占446字节),并把控制权 ...
- Effective C++:规定12:不要忘了复制的对象时,它的每一个组成部分
(一个) 继承制度的声明: class Date {...}; class Customer { public: ... private: string name; Date lastTransact ...
- 使用XML的五种场合,XML基本规则,XML的术语,结构与语法
在很多研讨会和培训班上我遇到过许多人,他们还不明白为什么要使用XML也不知道如何 在他们的应用中使用XML.一些来自诸如Gartner公司的报告建议说,商业公司不能再做 局外人了,不能对XML置之不理 ...
- JavaScript面向对象编程(10)高速构建继承关系之对象拷贝
前面的样例我们是通过构造器创建对象.而且希望该对象继承来自另外一个构造器的对象 我们也能够直接面向一个对象来达成继承的目的.使用下属步骤: 1.拷贝一个对象 2.给新对象加入属性 /** * 通过拷贝 ...
- [Android学习笔记]view的layout过程学习
View从创建到显示到屏幕需要经历几个过程: measure -> layout -> draw measure过程:计算view所占屏幕大小layout过程:设置view在屏幕的位置dr ...
- [C++]new和delete
Date:2014-1-5 Summary: C++中的动态内存创建与释放(这里就只记录C++中的new和delete了,其他的C风格操作就略过了) 单独记录new和delete的原因是为了学习时候关 ...
- PS中模式算法
详见地址:http://www.68ps.com/zt/cs5/hh_zhengpian.htm
- OCP读书笔记(2) - 配置恢复
RMAN的命令类型 1. sqlplus命令 [oracle@oracle admin]$ export ORACLE_SID=orcl [oracle@oracle admin]$ rman tar ...