属性设置

在面向对象程序开发中,所提及的属性通常指的是对象的属性。在XAML代码中,定义元素时也可以为其设置属性,例如对于一个TextBox元素,有背景属性、宽度属性和高度属性等。为了满足实际应用的需求,XAML语言提供了两种常用的方法来设置元素的属性。

(1)通过Attribute特性语法设置元素的属性

也就是在元素的开始标签中直接定义一个或多个隶属于该元素的属性,并为属性赋值,其语法结构如下所示:

<元素名
属性名1="属性值1" 属性名2="属性值2" …></元素名>

例如,定义一个TextBox元素,设置它的Text属性值为"你好",Height属性值为30像素,Width属性值为100像素,对应的XAML代码片段如下所示:

<TextBox Text="你好" Height="30" Width="100"></TextBox>

(2)通过Property属性元素语法设置元素的属性

在实际应用中,还可以通过定义Property属性元素来设置一个元素的属性,也就是在定义元素时将其属性定义成子元素,此时子元素开始标签的组合形式是"<元素名.属性名>",其语法格式如下所示:

<元素名>

  <元素名.属性名>

      <!--在此处设置属性值-->

  </元素名.属性名>

</元素名>

其中,属性值可以是基本数据类型,也可以为元素。

例如,定义一个Button元素,并通过Property属性元素语法设置它的Content属性值为"确定",相应的XAML代码片段如下所示:

<Button>

    <Button.Content>

        确定

    </Button.Content>

</Button>

对于复合型元素(如ComboBox),有些属性并不是基础元素,无法通过Attribute特性语法来设置这类属性,就可以使用Property属性元素方法。例如,在一个打开的Windows应用商店项目中新建一个空白页,并命名为ComboBoxPage,双击打开此页面的ComboBoxPage.xaml文件,在Grid元素中添加如下代码:

<ComboBox
Margin="249,99,702,395">

    <ComboBox.Items>

        <ComboBoxItem Content="1"/>

        <ComboBoxItem Content="2"/>

    </ComboBox.Items>

</ComboBox>

由于ComboBox元素的Items属性并不是基础元素,因此在上面的代码中通过定义ComboBox.Items属性元素来设置这个属性,并在该属性元素内定义两个ComboBoxItem元素为Items属性赋值。

运行此页面,会显示出一个下拉列表框,界面效果如图3-1所示。单击下拉箭头,所有列表项就会展现出来,在本示例中下拉列表框的列表项是"1"和"2",效果如图3-2所示。


图3-1 下拉列表框的界面效果 图3-2 单击下拉箭头之后的效果

像ComboBox元素的Items属性,它的属性值是一个数据集,对于这类属性,XAML还提供了隐式数据集设置方式,以简化代码的复杂性,提高易读性。例如,对于上面示例中的下拉列表框,使用隐式数据集方式来设置列表项,修改上面的XAML代码,如下所示:

<ComboBox Margin="249,99,702,395">

    <ComboBoxItem Content="1"/>

    <ComboBoxItem Content="2"/>

</ComboBox>

运行得到的效果与图3-1和图3-2中显示的效果是一样的。可以看出,修改的代码中没有定义ComboBox.Items属性元素,仍旧可以实现为ComboBox设置列表项,代码更简洁。

Win10系列:UWP界面布局基础2的更多相关文章

  1. Win10系列:UWP界面布局基础1

    随着技术的不断发展,使用者对应用程序的界面体验提出了更高的要求,为了应对越来越复杂的界面设计需求和有效的简化界面开发过程,微软公司在其应用程序的开发技术当中引入一套新的应用程序界面描述语言,这就是XA ...

  2. Win10系列:UWP界面布局基础8

    路由事件 XAML不仅继承了传统的事件处理方式,还引入了一个增强型事件处理机制:路由事件(RoutedEvent).路由事件和传统事件的不同是:路由事件允许一个对象触发事件后,可以同时拥有多个事件接收 ...

  3. Win10系列:UWP界面布局基础7

    2.附加属性 有一些XAML元素,其自身的属性大多是在其它的元素中声明和使用的,该元素本身却很少使用,这些在其他元素中声明和使用的属性被称为附加属性(Attached Properties).附加属性 ...

  4. Win10系列:UWP界面布局基础4

    类型转换 前面讲到过,在定义元素时可以通过Attributes特性方式为其设置属性并为属性赋值,在实际开发中所赋予的值可能和属性本身的数据类型不相符,这时XAML解析器就会使用类型转换器(Type C ...

  5. Win10系列:UWP界面布局基础12

    画刷 画刷(Brush)用于为图形元素填充颜色.在XAML中,画刷有许多属性,其中较常使用的是Fill属性和Stroke属性,Fill用于填充图形的背景色,而Stroke用于设置图形的线条颜色. 在实 ...

  6. Win10系列:UWP界面布局基础11

    样式继承 为了使样式便于维护及重复使用,可以在一个样式上引用其他的样式,这就是样式继承.样式继承的方法是:在Style元素的BasedOn属性上使用StaticResource标记扩展来引用被继承的样 ...

  7. Win10系列:UWP界面布局基础5

    (2)编写后台代码访问资源 下面通过一个例子来演示如何编写后台代码引用资源.新建一个Windows应用商店的空白应用程序项目,将其命名为AccessResourceApplication,打开项目下的 ...

  8. Win10系列:UWP界面布局基础3

    在实际项目开发中,为控件属性赋值时经常会遇到属性值在设计时处于未知状态,而只有在应用程序运行时才能获取到.这种情况下,直接赋值方法是无法满足的,可以使用XAML标记扩展(Markup Extensio ...

  9. Win10系列:UWP界面布局基础9

    在XAML中,样式.模板.画笔和动画等都被看做是资源,它们最终的作用都是相同的,就是让设计人员可以使用这些资源创建更好的视觉效果,对其设计的产品外观进行标准化统一,那么如何使用这些资源并组织和重用呢, ...

随机推荐

  1. 力扣(LeetCode)412. Fizz Buzz

    写一个程序,输出从 1 到 n 数字的字符串表示. 如果 n 是3的倍数,输出"Fizz": 如果 n 是5的倍数,输出"Buzz": 3.如果 n 同时是3和 ...

  2. java web 方面

    1.Tomcat的优化经验. 2.http请求的GET与POST方式的区别. (1)get是从服务器上获取数据,post是向服务器传送数据. (2)get是把参数数据队列加到提交表单的ACTION属性 ...

  3. Axure RP 8 下载 激活可以使用的授权码、用户名、秘钥等

    百度云下载地址: 链接:https://pan.baidu.com/s/13z0IPsKbLdPktiCD5eUe-A 提取码: oxhw 用户名: axureuser 序列号: 8wFfIX7a8h ...

  4. MySQL中如何实现select top n ----Limit

    Mysql中limit的用法详解 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. LIMIT 子句可以被用于强制 S ...

  5. mysql5.6以上版本: timestamp current_timestamp报1064/1067错误

    mysql5.6以上版本: timestamp current_timestamp报1064/1067错误 在创建时间字段的时候 DEFAULT CURRENT_TIMESTAMP表示当插入数据的时候 ...

  6. C# 获取当前服务器运行程序的根目录

    C# 获取当前服务器运行程序的根目录,获取当前运行程序物理路径 string tmpRootDir = AppDomain.CurrentDomain.BaseDirectory;//获得当前服务器程 ...

  7. 雷林鹏分享:C# 环境

    C# 环境 在这一章中,我们将讨论创建 C# 编程所需的工具.我们已经提到 C# 是 .Net 框架的一部分,且用于编写 .Net 应用程序.因此,在讨论运行 C# 程序的可用工具之前,让我们先了解一 ...

  8. LeetCode--011--盛最多水的容器(java)

    给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其中的两条线, ...

  9. Tensor RT使用记录

    Tensor RT的介绍在此不做赘述. 自己在服务器上本打算装Tensor RT来着,不过过程很艰辛,最后发现服务器的cudnn版本偏低了,还需要升级cudnn的版本.故,在自己的电脑上了装了下Ten ...

  10. P2469 [SDOI2010]星际竞速

    在何Au的讲解下终于搞明白了这个以前的坑. 首先考虑最小路径覆盖. 这个题意又要求我们求出的最大流为n-1(这样才能保证路径为1条) 考虑高速航行模式的图怎么建,只需要保证最大流的同时费用最小即可,显 ...