C#学习记录8——XAML

XAML:Extensible Application Markup Language,即可拓展应用程序标记语言

无论是在wp,wpf还是wf中,都可以用XAML来编辑页面的效果,非常简便

使用XAML时,既可以推拽控件到目的位置,也可以手敲代码实现控件的布局。当然,如果熟悉了还是代码方便些···

设计xaml非常的有趣,建议通过视频教程学习,边看边做,加强理解。

下面我把我在看视频教程中使用的几个非常简单的例子介绍一下。

下面的例子使用了grid,rectangle控件,并使用alignment和margin来分配布局

 1 <Page
 2     x:Class="AlignmentAndMargins.MainPage"
 3     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 4     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 5     xmlns:local="using:AlignmentAndMargins"
 6     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 7     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 8     mc:Ignorable="d"
 9     Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
10     <!--上面的代码定义了一些默认命名空间,以及设计的参数-->
11     <Grid>
12         <!--方形控件 fill填充色 height高度 width宽度 -->
13         <!--HorizontalAlignment表示水平方向向左对齐-->
14         <!--VerticalAlignment表示竖直方向向上对齐-->
15
16         <!--蓝色方块位于左上角-->
17         <Rectangle Fill="Blue"
18                    Height="100"
19                    Width="100"
20                    HorizontalAlignment="Left"
21                    VerticalAlignment="Top" />
22         <!--红色方块位于右下角-->
23         <Rectangle Fill="Red"
24                    Height="100"
25                    Width="100"
26                    HorizontalAlignment="Right"
27                    VerticalAlignment="Bottom" />
28         <!--绿色方块位于正中间-->
29         <Rectangle Fill="Green"
30                    Height="100"
31                    Width="100"
32                    HorizontalAlignment="Center"
33                    VerticalAlignment="Center" />
34         <!--Margin属性声明了控件四周与其他控件的距离 顺序为:左,上,右,下-->
35
36         <!--黄色方块向左上方对齐,与左侧距离100,与上方距离100-->
37         <Rectangle Fill="Yellow"
38                    Height="100"
39                    Width="100"
40                    HorizontalAlignment="Left"
41                    VerticalAlignment="Top"
42                    Margin="100,100"/>
43         <!--白色方块向左下方对齐,与左侧距离50,与下方距离50-->
44         <Rectangle Fill="White"
45                    Height="100"
46                    Width="100"
47                    HorizontalAlignment="Left"
48                    VerticalAlignment="Bottom"
49                    Margin="50,0,0,50"/>
50
51     </Grid>
52 </Page>

说明一下,Grid控件成为网格布局,类似HTML里面的Table标签,通过定义表格,然后设置表格里面的行和列,进行布局。

第一个例子并没有真正显示Grid的作用,下面通过第二个例子来看看行(row)和列(column)的定义

2.

 1 <Page
 2     x:Class="GridsRowsAndColumns.MainPage"
 3     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 4     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 5     xmlns:local="using:GridsRowsAndColumns"
 6     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 7     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 8     mc:Ignorable="d"
 9     Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
10
11     <!--Resources里面定义了一些在整个页面里都可用的一些模式-->
12     <Page.Resources>
13         <Style TargetType="TextBlock">
14             <Setter Property="FontSize" Value="42" />
15         </Style>
16     </Page.Resources>
17
18     <Grid>
19         <!--Grid.RowDefinitions 定义了grid里面的行-->
20         <!--*代表剩余部分,如果前面还有数字,则按照比例进行分配,例如下面各行分别占1/6,2/6,3/6-->
21         <Grid.RowDefinitions>
22             <RowDefinition Height="*" />
23             <RowDefinition Height="2*" />
24             <RowDefinition Height="3*" />
25         </Grid.RowDefinitions>
26         <!--Grid.ColumnDefinitions 定义了grid里面的列-->
27         <Grid.ColumnDefinitions>
28             <ColumnDefinition Width="*" />
29             <ColumnDefinition Width="*" />
30             <ColumnDefinition Width="*" />
31         </Grid.ColumnDefinitions>
32
33         <!--TextBlock文本块控件,用于显示少量文字-->
34         <TextBlock>1</TextBlock>
35         <TextBlock Grid.Column="1">2</TextBlock>
36         <TextBlock Grid.Column="2">3</TextBlock>
37
38         <TextBlock Grid.Row="1">4</TextBlock>
39         <TextBlock Grid.Row="1" Grid.Column="1">5</TextBlock>
40         <TextBlock Grid.Row="1" Grid.Column="2">6</TextBlock>
41
42         <TextBlock Grid.Row="2">7</TextBlock>
43         <TextBlock Grid.Row="2" Grid.Column="1">8</TextBlock>
44         <TextBlock Grid.Row="2" Grid.Column="2">9</TextBlock>
45
46     </Grid>
47 </Page>

grid网格布局,只是xaml提供的众多布局中的一种,其他的还有

StackPanel:堆放布局,将子元素排列成一行或一列

Canvas:绝对布局,通过指定子元素相对父元素的准确位置,来布局子元素。类似于javafx里面的anchorpane

ect.

3.StackPanel:

 1 <Page
 2     x:Class="StackPanelExample.MainPage"
 3     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 4     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 5     xmlns:local="using:StackPanelExample"
 6     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 7     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 8     mc:Ignorable="d"
 9     Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
10
11     <Grid>
12         <!--Orientation表示stackpanel的方向-->
13         <StackPanel Orientation="Horizontal" VerticalAlignment="Top">
14             <Rectangle Width="200" Height="200" Fill="Red" />
15
16             <StackPanel Orientation="Vertical">
17                 <StackPanel Orientation="Horizontal">
18                     <Rectangle Width="100" Height="100" Fill="White" />
19                     <StackPanel Orientation="Vertical">
20                         <Rectangle Width="100" Height="50" Fill="Green" />
21                         <Rectangle Width="100" Height="50" Fill="Blue" />
22                     </StackPanel>
23                 </StackPanel>
24
25                 <StackPanel Orientation="Horizontal">
26                     <Rectangle Width="100" Height="100" Fill="Yellow" />
27                     <StackPanel Orientation="Vertical">
28                         <Rectangle Width="100" Height="50" Fill="Black" />
29                         <Rectangle Width="100" Height="50" Fill="Pink" />
30                     </StackPanel>
31                 </StackPanel>
32             </StackPanel>
33         </StackPanel>
34     </Grid>
35 </Page>

最后,要提醒一点。如果习惯使用绝对布局,使用margin,或是直接拖拽的朋友要注意,如果在屏幕大小不同的设备上显示你的布局,可能会有问题。

所以,在设计页面布局时,最好使用*这样自动分配大小的属性,或是用ScrollViewer滚动视图控件来实现。

时间: 2024-10-03 10:07:33

C#学习记录8——XAML的相关文章

UWP学习记录7-设计和UI之控件和模式4

UWP学习记录7-设计和UI之控件和模式4 1.翻转视图 使用翻转视图浏览集合中的图像或其他项目(例如相册中的照片或产品详细信息页中的项目),一次显示一个项目. 对于触摸设备,轻扫某个项将在整个集合中进行浏览. 对于鼠标,导航按钮显示在鼠标悬停位置上. 对于键盘,使用箭头键移动浏览该集合. 翻转视图最适合浏览小到中型集合中的图像(最多 25 个项目左右). 此类集合的示例包括产品详细信息页中的项目或相册中的照片. 虽然微软不建议将翻转视图用于大多数大型集合,但是该控件通用于查看相册中的个别图像.

UWP学习记录4-设计和UI之控件和模式1

UWP学习记录4-设计和UI之控件和模式1 1.控件和事件简介 在 UWP 应用开发中,控件是一种显示内容或支持交互的 UI 元素. 控件是用户界面的构建基块. 我们提供了超过 45 种控件供你使用,范围从简单按钮到网格视图之类的功能强大的数据控件. 模式是合并多个控件来创造新内容的一种方式. 应用添加控件实现UI,主要是三个步骤: A.将控件添加到你的应用 UI. B.设置控件的属性,如宽度.高度或前景色. C.将代码添加到控件的事件处理程序,从而使其执行一些任务. 添加应用一般通过: A.1

UWP学习记录9-设计和UI之控件和模式6

UWP学习记录9-设计和UI之控件和模式6 1.图形和墨迹 InkCanvas是接收和显示墨迹笔划的控件,是新增的比较复杂的控件,这里先不深入. 而形状(Shape)则是可以显示的各种保留模式图形对象,例如椭圆.矩形.直线.贝塞尔曲线等,Path 是最通用的 Shape,因为使用它可以定义任意几何图形.图形这块,是和wpf一样的. 2.布局控件 布局控件这块,大体上也是和wpf一样的.布局控件包含边框(Border).画布(Canvas).网格(Grid).RelativePanel.Stack

UWP学习记录3-设计和UI之样式

UWP学习记录3-设计和UI之样式 1.颜色 在系统的“设置”>“个性化”>“颜色”里,提供了主题色选择.选定主题色后,会根据颜色亮度的 HSB 值创建浅色和深色的主题色. 应用可使用阴影变量创建可视化层次结构和提供交互指示.在 XAML 中,主要主题色显示为名为 SystemAccentColor 的主题资源. 这些色调可用作 SystemAccentColorLight3.SystemAccentColorLight2.SystemAccentColorLight1.SystemAccen

Python学习记录-2016-12-17

今日学习记录 模块: import os#导入os模块 import sys#导入sys模块 os.system("df -h")#执行df -h命令 cmd_res = os.popen("df -h").read()#将命令的返回结果赋值给cmd_res,如果不加入.read()会显示命令的返回加过在内存的位置 print(sys.path)#显示系统变量路径,一般个人模块位于site-packages下,系统模块位于lib下 print(sys.argu[2]

Objc基础学习记录5

NSMutableString类继承的NSString类. NSMutableString是动态的字符串. 1.appendingString 方式: 向字符串尾部添加一个字符串. 2.appendingFormat:可以添加多个类型的字符串. int,chat float,double等 3.stringWithString 创建字符串, 4.rangeOfString 返回str1在另一个字符串中的位置. 5.NSMakeRange(0,3) 字符串0位到3位. 6.deleteCharac

Windows API 编程学习记录&lt;二&gt;

恩,开始写Windows API编程第二节吧. 上次介绍了几个关于Windows API编程最基本的概念,但是如果只是看这些概念,估计还是对Windows API不是很了解.这节我们就使用Windows API 让大家来了解下Windows API的用法. 第一个介绍的Windows API 当然是最经典的MessageBox,这个API 的作用就是在电脑上显示一个对话框,我们先来看看这个API的定义吧: int WINAPI MessageBox(HWND hWnd, LPCTSTR lpTe

Windows API 编程学习记录&lt;三&gt;

恩,开始写API编程的第三节,其实马上要考试了,但是不把这节写完,心里总感觉不舒服啊.写完赶紧去复习啊       在前两节中,我们介绍了Windows API 编程的一些基本概念和一个最基本API函数 MessageBox的使用,在这节中,我们就来正式编写一个Windows的窗口程序. 在具体编写代码之前,我们必须先要了解一下API 编写窗口程序具体的三个基本步骤:             1. 注册窗口类:             2.创建窗口:             3.显示窗口: 恩,

Python学习记录day6

Python学习记录day6 学习 python Python学习记录day6 1.反射 2.常用模块 2.1 sys 2.2 os 2.3 hashlib 2.3 re 1.反射 反射:利用字符串的形式去对象(默认)中操作(寻找)成员 cat commons.py #!/usr/bin/env python#_*_coding:utf-8_*_''' * Created on 2016/12/3 21:54. * @author: Chinge_Yang.''' def login(): pr