XAML对象元素语法

1.对象元素语法

使用开闭标签将对象定义一个XML元素,这种语法与其他标记语言如HTML的元素语法非常相似,在以左右尖括号保卫要设置的类或结构的类型名称。对象元素可以声明0个或多个属性,以一个或多个空格来分割每个“属性名=值“

对,例如 下面使用对象元素语法设置一个TextBox对象并设置其Content和FontSize属性和命名空间

  <TextBox FontSize="10">这是一个textBox控件</TextBox>     <textbox> </textbox>  <textbox /> 这个样才是一个对象

2.属性语法

  属性语法对于简单类型的属性赋值场合非常便利,但是对于一些本身就是复杂类型的属性来说,使用属性语法会有些难于理解,甚至难于实现

  一个比较单行的复杂属性是Background属性,通常使用如下的语法来为UI是对象设置背景色如下

<Button Content="登录" Background="Red" ></Button>

这里直接为Background赋一个颜色值,XAML解析器会使用BrushConverter转换器将这个字符串转换为一个Brush类的派生对象。在.NET中,Brush类实际上是一个抽象类,因此对于Background属性

也可以使用渐变画刷,如果需要为背景设置渐变,使用上面的属性语法代码是很困难的,所幸的是XAML也提供了另外一种属性的方法。

3.属性元素语法

  属性元素语法允许在元素累不使用”元素名.属性名“的语法来设置复杂的属性,类似于一个元素中的子元素一样。例如 上面设置单色背景的属性语法,也可以改用属性元素语法来设置

  

  <Button Content="登录"  >
            <Button.Background>
                <SolidColorBrush Color="Red" />
            </Button.Background>
        </Button>

如果使用vs设置属性元素语法,会发现在<button.Background>属性元素之间,提供了多种可供设置的属性看。如果非要走极端也可以这么写

  <Button Content="登录"  >
            <Button.Background>
                <SolidColorBrush>
                    red
                </SolidColorBrush>
            </Button.Background>
        </Button>

标记扩展特性

  在一些情况下,属性的值并不能再编写代码时就能够知道,可能需要在运行时由程序产生,或者由用户产生。或者说,开发人员希望从一个已经存在的空间的某个值来设置其他空间属性值。

标记扩展可以使用在内嵌元素标记或者是XAML属性语法中,对于属性语法,通常使用大括号包围其语法。而对于属性元素语法,标记扩展在外观上与其他任何用于提供属性元素之的元素相同,即一个将标记扩展类作为一个元素引用并以尖括号(<>)扩起的

XAML元素声明。下面使用属性语法来应用标记扩展,在代码中将为Button 的前景色职位为SystemColor类中的静态属性ActiveCaptionBrush

 <Button Content="登录"  Background="{x:Static SystemColors.ActiveBorderBrush}" />

这段代码中,标记扩展使用{MarkupExtension 派生类 参数}。在本例中标记扩展是一个StaticExtension类。X前缀指示StaticExtencion可以在XAMl命名空间中找到,也有很多标记扩展属于WPF命名空间,因此没有X前缀。

使用属性元素语法

 <Button Content="登录">
            <Button.Foreground>
                <x:Static Member="SystemColors.ActiveCaptionBrush"></x:Static>
            </Button.Foreground>
        </Button>

附加属性

  附加属性是指定义在不同类中的属性可以被应用到其他的控件。在WPF中,附加属性常常用来作为布局属性。

在WPF中,每个控件都有其内在的属性,比如,一个文本框控件有特定的字体、颜色和文本内容等,但是当将这个控件放到一个容器控件中时,依赖于不同的容器

控件能够进行一些在影响控件在容器中的特性的属性设置,这通常通过添加附加属性来进行设置。

  附加属性使用两部分的语法表示形式:类型定义.属性名称,使用这种命名方式,XAML解析器能够区别标准属性与附加属性。下面演示附加属性的一个用法

假定想要为StackPanel中的textblock对象设置字体的大小,可以使用下列代码

  

  <StackPanel TextBlock.FontSize="18">
        <TextBlock >这个是一个block控件</TextBlock>
        <TextBlock FontSize="9">这个是第二个控件</TextBlock>
    </StackPanel>

以上代码为Stackpanel指定了一个Textblock.FontSize附加属性,指定了字体为18,可以看到,如果不单独指定textblock的字体大小,则会使用Stackpanel中定义的大小

附加属性其实并不是属性,他们实际上会被转换为方法调用,XAMl解析器经调用一组静态方法,这些方法一DefiningType.SetPropertyName(也就是类型.SET属性)

的形式进行调用,因此,对于上面XAMl代码,也可以使用如下的C#程序代码来设置附加属性

 private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            TextBlock.SetFontSize(stackpanel1,40);
        }

  为了在代码中Stackpanel对象应用附加属性,在XAMl中需要为其设置Name属性

原文地址:https://www.cnblogs.com/xiaowie/p/9305859.html

时间: 2024-11-05 13:38:45

XAML对象元素语法的相关文章

几何画板对象元素的意义

几何是一门富有创造性的知识工具,可以发现对象之间有趣的关系.几何画板为您提供丰富的几何对象和使用方法,您不仅可以创建这些对象,并且建立之间的联系以及确定其属性.以下内容介绍几何画板中的对象元素. 几何画板中可用的对象元素如下: 几何画板对象元素的类别如下: 1.路径对象:在几何画板上构造某一特定的几何对象的轨迹叫做路径对象,主要包括构造线段(也可以使射线.直线和坐标线).圆.弧.多边形.函数图和参数方程等. 2.直线对象:可绘制线段.射线.直线,用作构建平行线和垂直线,还可以计算直斜率和一个点到

.NET前后台-JS获取/设置iframe内对象元素并进行数据处理

转载请注明出处:果冻栋吖 这个主要是修改H3BPM一个批量审批的功能时候做的.先看下图: H3自带了批量审批的功能,也就是按钮1,有审批意见3,但是如果3里边不填写内容点击1之后,效果就是表单里边没有任何内容.其次可以依次点击每个表单的提交按钮进行提交.会提交对应的审批意见.现在的需求是:增加一个按钮,但是需要提交所有流程的审批内容,因为他们并不可能完全一样.也就是这里的2. 前台HTML代码: <asp:LinkButton ID="btnApproveone" runat=&

OC中对象元素的引用计数 自动释放池的相关概念

OC中数组对象在是如何处理对象元素的引用计数问题的,同时介绍一下自动释放池的相关概念 一.数组对象是如何处理对象元素的引用计数问题[objc]  view plaincopy 1. //   2. //  main.m   3. //  26_NSArrayMemeryManager   4. //   5. //  Created by jiangwei on 14-10-12.   6. //  Copyright (c) 2014年 jiangwei. All rights reserve

XAML: 获取元素的位置

原文:XAML: 获取元素的位置 在之前讨论 ListView 滚动相关需求的文章中(UWP: ListView 中与滚动有关的两个需求的实现)曾经提到了获取元素相对位置的方法,即某元素相对另一元素的位置.现将所有相关方法再作整理,并且包括 UWP 与 WPF 两者的实现,如下: WPF(两种方式): GeneralTransform generalTransform = controlB.TransformToVisual(controlA); Point point = generalTra

HTML元素语法和嵌套规则及注意事项

HTML 元素 HTML 文档由 HTML 元素定义,HTML 元素指的是从开始标签(start tag)到结束标签(end tag)的所有代码. *开始标签常被称为起始标签(opening tag),结束标签常称为闭合标签(closing tag). HTML 元素语法 HTML 元素以开始标签起始 HTML 元素以结束标签终止 元素的内容是开始标签与结束标签之间的内容 某些 HTML 元素具有空内容(empty content) 空元素在开始标签中进行关闭(以开始标签的结束而结束) 大多数

实现对List里面的对象元素,以某个属性来分组

实现对List里面的对象元素,以某个属性来分组. 代码实现: import com.alibaba.fastjson.JSON; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class ListGroupTest { static List<User> us

数组对象元素的添加,String对象,BOM对象以及文档对象的获取

数组对象的删除有三种方法: pop();        //移除最后一个元素并返回该元素值shift();      //移除最前一个元素并返回该元素值,数组中元素自动前移splice(0,2); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素通过这三种方法我们可以将数组中的元素按进行删除 var del = ["aa",23,345,56,34,"bb"]; var del_last = del.pop()

在iframe子页面中获取并操作父级页面的对象/元素

//获取iframe的window对象 // var gbiframe = window.top.document.getElementById("gbiframe").contentWindow; // 通过获取到的window对象操作HTML元素,这和普通页面一样 // var val = gbiframe.document.getElementById("gbaddr").value; // alert(val); 只有FF能使用

集合框架(去除ArrayList集合中的重复自定义对象元素案例)

学生类 package cn.itcast_04; public class Student { private String name; private int age; public Student() { super(); } public Student(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public v