WPF真入门教程03--XAML介绍

一、窗体类基本概念

       对于WPF应用程序,在Visual Studio和Expression Blend中,自定义的窗体均继承System.Windows.Window类。用户通过窗口与 Windows Presentation Foundation (WPF) 独立应用程序进行交互。 窗口的主要用途是承载可视化数据并使用户可以与数据进行交互的内容。独立 WPF 应用程序使用 Window 类来提供它们自己的窗口。在 WPF 中,可以使用代码或 XAML 标记来实现窗口的外观和行为。我们这里定义的窗体也由这两部分组成:

1、 XAML文件(MainWindow.xaml),在这里面通常全部写UI的东西,包括窗口的外观,控件等。

2、窗口界面中的各种行为,则由后台代码文件(MainWindow.xaml.cs)决定。

二、XAML基本概念    

      XAML 是⼀种声明性标记语⾔。 应⽤于 .NET Core 编程模型时,XAML 简化了为 .NET Core 应⽤创建 UI 的过程。 XAML ⽂件是通常具有 .xaml 扩展名的 XML ⽂ 件。 可通过任何 XML 编码对⽂件进⾏编码,但通常以 UTF-8 编码。

       对象元素语法 是 XAML 标记语法,它通过声明 XML 元素来实例化 CLR 类或结 构。 此语法类似于其他标记语⾔(如 HTML)的元素语法。 单标签格式。 。 双标签格式。 【可嵌⼊其他的标签】 ⼀个 XAML ⽂件只能有⼀个根元素,这样才能同时作为格式正确的 XML ⽂件和有 效的 XAML ⽂件。 对于典型 WPF ⽅案,可使⽤在 WPF 应⽤模型中具有突出意义 的根元素(例如,⻚⾯的 Window 或 Page)。 在根标签下⾯有且只能有⼀个⼆级标签。在⼆级标签⾥⾯我们可以写多个三级 四 级标签。 

 默认情况下,MainWindow.xaml文件代码如下:

在许多 XAML ⽂件的根标记中的命名空间声明内,通常可看到两个 XML 命名 空间声明。

第⼀个声明默认映射整个 WPF 客户端/框架 XAML 命名空间: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

第⼆个声明映射单独的 XAML 命名空间,通常将其映射到 x: 前缀。 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 这些声明之间的关系是 x: 前缀映射⽀持作为 xaml 语⾔定义⼀部分的内部函数, ⽽ WPF 是⼀种将 xaml ⽤作语⾔的实现,并为 xaml 定义了其对象的词汇。

这个xaml文件中的grid就是一个布局控件,一个window下只能有一个grid控件,而我们要设计的布局就必须包含在grid控件中。Grid顾名思义就是“网格”,以表格形式布局元素,对于整个面板上的元素进行布局,它的子控件被放在一个一个事先定义好的小格子里面,整齐配列,后面会开始讲各种UI控件。

三、XAML的语法

属性元素语法

语言难以表达,用一个实例表达此含义。

<Button>
 <Button.Background><!--设置背景颜色-->
   <SolidColorBrush Color="Blue"/>
 </Button.Background>
 <Button.Foreground><!--设置前景色 显示-->
   <SolidColorBrush Color="Red"/>
 </Button.Foreground><!--按钮上的文字内容-->
 <Button.Content> This is a button </Button.Content>
</Button>

集合语法

可以理解为设置了集合属性的数值

<LinearGradientBrush.GradientStops>是集合属性,其内部可以添加多个GradientStop来实现元素渐变效果。语言难以表达,用一个实例表达此含义,实例如下:

<LinearGradientBrush>
  <LinearGradientBrush.GradientStops> 
    <GradientStop Offset="0.0" Color="Red" />
    <GradientStop Offset="1.0" Color="Blue" />
  </LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<!--LinearGradientBrush使用沿直线(渐变轴)定义的渐变绘制区域。 
使用对象指定渐变的颜色及其在渐变轴上的位置 GradientStop 。-->

XAML内容属性

仅对内容属性而言,可以在 XAML 标记中设置该属性时省略属性元 素,并在标记中生成更直观的父级/子级形式。

<Border>
<TextBox Width="300"/>
</Border> 
<Border>
 <Border.Child>
   <TextBox Width="300"/>
 </Border.Child> 
</Border>

上例中第一个元素使用内容属性省略Border.Child属性元素,第二个元素显式显示Border.Child

文本内容

XAML 元素可直接将文本作为其内容来处理。 若要实现此功能,必须满足以下条件之一:

  • 类必须声明一个内容属性,并且该内容属性必须是可赋值给字符串的类型(该类型可以是 Object)。
  • 类型必须声明一个类型转换器,该类型转换器将文本内容用作初始化文本。 例如, 将 Blue 的内容值转换为画笔。 这种情况实际上并不常见。
  • 类型必须为已知的 XAML 语言基元。
<StackPanel>
 <Button>First Button</Button><!--按钮文本显示-->
 <Button>Second Button</Button>
</StackPanel>

上例中Button是StackPanel的子元素

特性语法(事件)

特性语法还可用于事件成员,而非属性成员。 在这种情况下,特性的名称为事件的名称。 在 XAML 事件的 WPF 实现中,特性的值是实现该事件的委托的处理程序的名称。

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  x:Class="ExampleNamespace.ExamplePage"> 
  <Button Click="Button_Click" >Click Me!</Button>
</Page>

上例中将Click事件赋予给在标记中创建的Button。

看到这里,你是不是觉得XAML语法复杂?绝对不会的,不要怕,有我在,暂时放一边,后面跟着撸,从简单的开始积累,千里之行,始于足下。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hqwest

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值