Win10系列:UWP界面布局基础7
2.附加属性
有一些XAML元素,其自身的属性大多是在其它的元素中声明和使用的,该元素本身却很少使用,这些在其他元素中声明和使用的属性被称为附加属性(Attached Properties)。附加属性是一种特殊的依赖项属性,其使用格式如下所示:
<元素名
附加元素名.附加属性名 = 属性值
...> ... </元素名>
例如,在一个布局元素Canvas内添加一个按钮,按钮本身并没有设置任何属性来控制它的位置,但是Canvas中的两个依赖项属性Left和Top,作为按钮的附加属性来定义按钮位置,相应的XAML代码片段如下所示:
<Canvas>
<Button Canvas.Left="25" Canvas.Top="30"/>
</Canvas>
在上面的代码中,Button元素使用了Canvas中的附加属性Left和Top,就像是从Canvas中继承的一样,尽管这两个属性仍旧属于Canvas元素,但是属性值已经附加到了按钮上,并且产生了效果。
从这个示例可以看出,在定义元素时,可以通过"继承"或"附加"其他元素的属性来在本元素上实现特有的效果。
3.2.8 事件
事件是Windows消息机制中的重要概念,也是较常见的人机交互方式之一。如果一个对象触发一个事件,那么此对象就被称为事件发送者,而该事件所影响的对象则被称为事件接收者。在传统应用中,一个对象触发事件后,只能有一个事件接收者。像在Windows窗体应用程序开发中,事件的发送者和接收者是同一个对象,例如,单击一个按钮对象,这个按钮对象会触发Click事件,同时该对象的后台代码将接收Click事件,并且执行相关的事件处理程序。
1. XAML事件
在XAML中也使用事件机制来管理用户的操作,每个操作对应一个事件,根据用户的不同操作执行不同的事件处理程序,进而产生不同的行为。
例如,向一个页面中添加一个按钮,并为按钮注册Click事件的事件处理方法,来响应对这个按钮的单击操作,相应的XAML代码片段如下所示:
<Button Name="OpenButton" Click="Button_Click">打开</Button>
在上面代码中,Click事件的处理方法是Button_Click,当单击按钮时会触发按钮的Click事件,后台就会调用事件处理方法Button_Click来处理这个事件。Button_Click方法的代码片段如下所示:
private void Button_Click(object sender, RoutedEventArgs e)
{
// 在此处编写事件处理过程的代码
}
下面通过一个简单的示例来演示如何使用XAML中的事件。新建一个Windows应用商店的空白应用程序项目,将其命名为ButtonClickEventApplication。打开MainPage.xaml文件,在Grid元素中添加如下代码片段:
<Button Content="点击这里" Margin="112,339,0,391" Click="Button_Click"/>
<TextBox Name="ShowText" TextAlignment="Center" Margin="235,337,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Height="40" Width="85"/>
在上面的代码中,首先添加了一个Button按钮,设置按钮的Content属性值为"点击这里",并为按钮的Click事件注册事件处理方法Button_Click;然后添加了一个TextBox文本框,名称为ShowText,并设置TextAlignment属性值为center,使文本内容采用居中对齐方式。同时,使用鼠标将这两个控件拖动到界面中合适的位置。
布局好前台界面后,打开MainPage.xaml.cs文件,定义"点击这里"按钮的Click事件处理方法Button_Click,实现单击按钮时在ShowText文本框中显示"提交成功",相应的代码片段如下:
private void Button_Click(object sender, RoutedEventArgs e)
{
// 在ShowText文本框中显示"提交成功"文本信息
ShowText.Text = "提交成功";
}
在上面的代码中,将"提交成功"字符串赋值给ShowText文本框的Text属性,使ShowText文本框显示相应的文本内容。
启动调试,在没有单击"点击这里"按钮之前,文本框中的内容是空的,效果如图3-11所示。单击"点击这里"按钮,文本框显示出"提交成功",从而响应了单击按钮的操作,效果如图3-12所示。
图3-11 未单击按钮之前的效果 图3-12 单击按钮之后的效果
Win10系列:UWP界面布局基础7的更多相关文章
- Win10系列:UWP界面布局基础1
随着技术的不断发展,使用者对应用程序的界面体验提出了更高的要求,为了应对越来越复杂的界面设计需求和有效的简化界面开发过程,微软公司在其应用程序的开发技术当中引入一套新的应用程序界面描述语言,这就是XA ...
- Win10系列:UWP界面布局基础8
路由事件 XAML不仅继承了传统的事件处理方式,还引入了一个增强型事件处理机制:路由事件(RoutedEvent).路由事件和传统事件的不同是:路由事件允许一个对象触发事件后,可以同时拥有多个事件接收 ...
- Win10系列:UWP界面布局基础4
类型转换 前面讲到过,在定义元素时可以通过Attributes特性方式为其设置属性并为属性赋值,在实际开发中所赋予的值可能和属性本身的数据类型不相符,这时XAML解析器就会使用类型转换器(Type C ...
- Win10系列:UWP界面布局基础2
属性设置 在面向对象程序开发中,所提及的属性通常指的是对象的属性.在XAML代码中,定义元素时也可以为其设置属性,例如对于一个TextBox元素,有背景属性.宽度属性和高度属性等.为了满足实际应用的需 ...
- Win10系列:UWP界面布局基础12
画刷 画刷(Brush)用于为图形元素填充颜色.在XAML中,画刷有许多属性,其中较常使用的是Fill属性和Stroke属性,Fill用于填充图形的背景色,而Stroke用于设置图形的线条颜色. 在实 ...
- Win10系列:UWP界面布局基础11
样式继承 为了使样式便于维护及重复使用,可以在一个样式上引用其他的样式,这就是样式继承.样式继承的方法是:在Style元素的BasedOn属性上使用StaticResource标记扩展来引用被继承的样 ...
- Win10系列:UWP界面布局基础5
(2)编写后台代码访问资源 下面通过一个例子来演示如何编写后台代码引用资源.新建一个Windows应用商店的空白应用程序项目,将其命名为AccessResourceApplication,打开项目下的 ...
- Win10系列:UWP界面布局基础3
在实际项目开发中,为控件属性赋值时经常会遇到属性值在设计时处于未知状态,而只有在应用程序运行时才能获取到.这种情况下,直接赋值方法是无法满足的,可以使用XAML标记扩展(Markup Extensio ...
- Win10系列:UWP界面布局基础9
在XAML中,样式.模板.画笔和动画等都被看做是资源,它们最终的作用都是相同的,就是让设计人员可以使用这些资源创建更好的视觉效果,对其设计的产品外观进行标准化统一,那么如何使用这些资源并组织和重用呢, ...
随机推荐
- L1-044. 稳赢
这种题不是考思维,就是考你细心程度还有基础知识的,代码如下: #include <iostream> #include <string> using namespace std ...
- Qt532,鼠标键盘事件_ZC
1.判断鼠标左键是否是 按下的状态 void TdrWebview::mouseMoveEvent(QMouseEvent *_pEvent) { if (_pEvent->buttons() ...
- 学习笔记5—Python 将多维数据转为一维数组 (总结)
<code class="language-python">import operator from functools import reduce a = [[1,2 ...
- centos 7 安装jdk1.8
首先下载jdk1.8 去官网下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151. ...
- Linux下计划任务以及crontab权限问题
在Linux工作环境下,我们有时可能会需要在未来某个时间执行某个命令或脚本,但是我们又不可能定个闹钟,然后到点了再去执行吧,这多麻烦.还好我们的Linux系统这么强大,提供了任务计划这个功能,我们就不 ...
- Python实现一条基于POS算法的区块链
区块链中的共识算法 在比特币公链架构解析中,就曾提到过为了实现去中介化的设计,比特币设计了一套共识协议,并通过此协议来保证系统的稳定性和防攻击性. 并且我们知道,截止目前使用最广泛,也是最被大家接受的 ...
- webpack热更新
文件地址:https://pan.baidu.com/s/1kUOwFkV 从昨天下午到今天上午搞了大半天终于把热更新搞好了,之前热更新有两个问题,第一个是不能保存表单状态.第二个是更新太慢,这次主要 ...
- 关于导入高德地图 java.lang.UnsatisfiedLinkError: Couldn't load XXXfrom loader dalvik.system.PathClassLoader[DexPathLis
然后后面就是找不到高德地图提供的地图so 就是上面几个 然后不要忘了在buildGradle文件里添加这么一句话 sourceSets { main { jniLibs.srcDirs = ['lib ...
- 机器学习ML策略
1.为什么是ML策略 例如:识别cat分类器的识别率是90%,怎么进一步提高识别率呢? 想法: (1)收集更多数据 (2)收集更多的多样性训练样本 (3)使用梯度下降训练更长时间 (4)尝试Adam代 ...
- python基础之面向对象的多继承以及MRO算法
内容梗概: 1. python多继承 2. python经典类的MRO 3. python新式类的MRO C3算法 1.python多继承 class Shen: def fly(self): pri ...