c# xaml语言教程,c#学习之30分钟学会XAML

1.狂妄的WPF

相对传统的Windows图形编程,需要做很多复杂的工作,引用许多不同的API。例如:WinForm(带控件表单)、GDI+(2D图形)、DirectX API(3D图形)以及流媒体和流文档等,都需要不同的API来构建应用程序。

WPF就是看着上面的操作复杂和不爽,自己决定做老大,想用DirectX技术涵盖一切,于是想要将上述的东西全部融合到自身,减少复杂度,让编程变得爽起来的技术。

而不可否认的是,WPF虽然很狂妄,但是这种技术里面还是有不少的可圈可点的东西。而支持WPF狂妄的资本,则就是和它后台代码可以前后分离的XAML技术。下面用30分钟时间说一下XAML。

2.什么是XAML

一个界面程序的核心,无疑就是界面和后台代码,而xaml就是微软为构建应用程序界面而创建的一种描述性语言,也就是说,这东西是搞界面的。

先上一段xaml代码:

xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'

xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'

Title='MyXaml' Height='150' Width='300' >

性别:

上述xaml是我设计了一个三行两列的界面,运行之后显示如下:

56620a5befb63ce2a16af5d170937e9b.png

在此,我没有写一行c#代码,但是它竟然可以运行,所以也可以说它也是一种编程语言。只不过它更关注界面上面的东西而已。

那么它的运行是如何产生的?下面看几个东西:

x:Class='MyXaml.Window1' ——利用class特性指定c#类名(后台c#代码)

xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml——这表示利用x代替XAML的命名空间。用于包含特定的关键字和System.Windows.Markup中类型的子集。

xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation——另一个命名空间。映射诸多wpf.net命名空间(system.windows.xxx,是个一对多的映射,主要封装了三个程序集中,WindowsBase.dll、Presentation.dll和PresentationFramework.dll)

2.1 启动

程序启动的地方,其实是在程序的App.xaml文件里面:

xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'

xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'

StartupUri='Window1.xaml'>

看下面这句:

StartupUri='Window1.xaml'

这个就是程序的入口点,运行程序之后,我们就将window1显示在了显示屏上。

3.XAML语法概述

上述xaml中,显示的一个核心布局就是以下这些代码:

性别:

1、看Grid控件,这个在wpf中是一个布局控件,就跟将窗体设置单元格差不过,可以依据它的row和column属性来设置行和列。上述设置了一个三行两列的布局。

2、看TextBlock和TextBox控件,这些都是一些显示控件,一个显示条和一个文本框,wpf中除此之外,还有许多的控件。

首先需要再确认的一点,那就是在C#中一切皆对象。如此一来,也就好理解了。

在XAML中的这些形形色色的控件其实就是一个个的类,我们应用了他们就相当于是应用了一个个的对象,而他们之中定义的一些width、height等属性,就是这些类中封装的一些属性字段。

当然,像上面TextBox和TextBlock中的Grid.Column='1' Grid.Row='2'等属性,其实并不属于这两个类中的属性和字段。

而使得他们具备这样属性的,无疑就是外面的Grid布局控件赋予的,而在WPF中这样的功能实现叫

  • 3
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用 C#XAML 创建一个简单的 Avalonia DataGrid 的示例: C# 代码: ```csharp using Avalonia; using Avalonia.Controls; using Avalonia.Markup.Xaml; using Avalonia.Media; using System.Collections.Generic; public class MainWindow : Window { public MainWindow() { InitializeComponent(); DataContext = new List<Person> { new Person { Name = "Alice", Age = 25 }, new Person { Name = "Bob", Age = 30 }, new Person { Name = "Charlie", Age = 35 }, }; } private void InitializeComponent() { AvaloniaXamlLoader.Load(this); } } public class Person { public string Name { get; set; } public int Age { get; set; } } ``` XAML 代码: ```xaml <Window x:Class="DataGridExample.MainWindow" xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="DataGrid Example" Width="400" Height="300"> <StackPanel> <DataGrid Items="{Binding}" AutoGenerateColumns="True"> <DataGrid.RowStyle> <Style Selector="Row"> <Setter Property="Background" Value="{Binding Age, Converter={StaticResource AgeToBrushConverter}}"/> </Style> </DataGrid.RowStyle> </DataGrid> </StackPanel> </Window> ``` 这个示例中,我们创建了一个 `MainWindow` 类,继承自 Avalonia 的 `Window` 类。在 `MainWindow` 的构造函数中,我们首先调用 `InitializeComponent()` 方法,该方法从 XAML 文件中加载 UI,然后将 `DataContext` 属性设置为一个 `List<Person>` 对象,其中包含了三个 `Person` 的实例。 在 XAML 中,我们创建了一个 `DataGrid` 控件,并将 `Items` 属性绑定到 `DataContext`。由于我们没有指定列,因此 `AutoGenerateColumns` 属性设置为 `True`,这将自动生成列。 此外,我们还定义了一个 `RowStyle`,用于设置行的背景色。我们使用了一个名为 `AgeToBrushConverter` 的转换器,将年龄转换为对应的颜色。请注意,我们需要在 XAML 中声明 `AgeToBrushConverter`,并将其绑定到 `Background` 属性。 希望这个示例对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值