当前位置: 首页 > article >正文

C#WPF的XAML的语法详谈和特性

WPF的XAML(eXtensible Application Markup Language)是一种基于XML的标记语言,用于在.NET框架中定义和描述用户界面。XAML提供了一种声明性的方式来构建应用程序的UI元素,包括窗口、控件、布局、样式、动画和数据绑定等。

XAML的对象元素:

对象元素通常声明类型的实例。 该类型在将 XAML 用作语言的技术所引用的程序集中定义

格式<创建实例的类型名></创建实例的类型名>或者<创建实例的类型名 />

对象元素指的是用来定义和初始化对象的XML标签。这些元素可以是控件、布局容器、数据绑定对象等。

<Window x:Class="xaml训练.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:xaml训练"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <StackPanel>
            <Button Content="Button 1"></Button>
            <Button Content="Button 2" />
        </StackPanel>
    </Grid>
</Window>

 一些常用的XAML的对象元素:

  1. 控件对象

    <Button Content="Click Me" />
  2. 布局容器

    <StackPanel>
        <Button Content="Button 1" />
        <Button Content="Button 2" />
    </StackPanel>
  3. 数据绑定对象

    <TextBlock Text="{Binding Path=Name}" />
  4. 属性设置

    <Button Content="Click Me" Width="100" Height="30" />
  5. 事件处理

    <Button Content="Click Me" Click="OnButtonClick" />
  6. 资源定义

    <Window.Resources>
        <SolidColorBrush x:Key="MyBrush" Color="Red" />
    </Window.Resources>
  7. 样式定义

    <Window.Resources>
        <Style TargetType="Button">
            <Setter Property="Background" Value="Blue" />
        </Style>
    </Window.Resources>
  8. 自定义控件

    <local:MyCustomControl />

 XAML的特性语法(属性)

  1. 设置属性值

    <Button Content="Click Me" Width="100" Height="30" />
  2. 绑定属性到数据源

    <TextBox Text="{Binding Path=UserName}" />
  3. 设置资源引用

    <Button Content="Click Me" Background="{StaticResource MyBrush}" />
  4. 使用类型转换器

    <Label Content="{Binding Path=Age, Converter={StaticResource IntegerToStringConverter}}" />
  5. 设置事件处理器

    <Button Content="Click Me" Click="OnButtonClick" />
  6. 使用附加属性

    <TextBox TextOptions.TextFormattingMode="Display" />
  7. 设置样式和模板

    <Button Content="Click Me" Style="{StaticResource MyButtonStyle}" />
  8. 使用命令

    <Button Content="Click Me" Command="{Binding Path=MyCommand}" CommandParameter="Parameter" />
  9. 设置动画

    <Button Content="Click Me">
        <Button.Triggers>
            <EventTrigger RoutedEvent="Button.Click">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1.0" To="0.0" Duration="0:0:1" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Button.Triggers>
    </Button>
  10. 使用数据模板

    <ListBox ItemsSource="{Binding Path=Items}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Path=Name}" />
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

XAML的语法细节:

a. 标签的本质是一个类(对象)。
b. 标签:双标签(非空标签,闭合标签)、单标签(空标签)。
c. XAML中俗称的标签,官方称对象元素。
d. 属性只出现在开始标签中。俗称的属性官方称特性语法。
e. 内容区:指开始标签和结束标签之间的信息。不仅仅只包含文本,也可能包含子标签。
f. 标签的内容区本质上也是属性。
g. XAML 区分大小写。属性之间的空白不可少。空白也有利于XAML代码格式化。
h. 命名空间及前缀,自定义前缀。
i. 事件,路由事件及代码隐藏(CodeBehind代码在后面)。事件本质上也是一种属性。路由:本质上就是一个路径,指明到某个地方的一个路径。
j. 命名元素及附加属性。命名元素就是给标签启个名字,名字不建议(不能)重复。附加属性就是标签本来没有的属性,由于和其他标签结合起来使用时,其他标签附加到此标签的属性。
k. 标记扩展(重点,难点),绑定语法,将来再讲MVVM框架时再谈。

XAML的一些关键特性:

1.声明性语法:XAML使用XML标记来声明UI元素,这使得界面设计和布局可以独立于代码逻辑。

2.控件和属性:XAML允许你定义各种控件(如按钮、文本框等)及其属性(如宽度、高度、颜色等)。

3.数据绑定:XAML支持数据绑定,可以将UI元素与数据源绑定,实现数据的自动更新和交互。

4.资源和样式:XAML允许定义资源(如颜色、样式等)和样式,以实现UI元素的一致性和可重用性。

5.事件绑定:XAML支持将事件处理器绑定到UI元素的事件上,例如将按钮的点击事件绑定到一个方法。

6.模板:XAML可以定义控件模板,自定义控件的外观和行为。

7.布局:XAML提供了多种布局控件,如Grid、StackPanel、WrapPanel等,用于组织和排列UI元素。

8.动画和交互:XAML支持定义动画和交互效果,增强用户体验。

9.可扩展性:XAML是可扩展的,可以定义自定义控件和类型。

10.分离关注点:XAML允许UI设计和逻辑代码分离,提高开发效率和可维护性。

一个简单的XAML示例,定义了一个包含按钮的窗口:

<Window x:Class="WpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Button Content="Click Me" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10"/>
    </Grid>
</Window>

Window元素定义了一个窗口,Grid元素作为布局控件,Button元素定义了一个按钮。x:Class属性将XAML文件与后台代码(Code-behind)关联起来。

XAML的设计哲学是将界面设计和逻辑代码分离,使得设计师可以专注于界面设计,而开发者可以专注于逻辑实现。这种分离也有助于提高应用程序的可维护性和可测试性。


http://www.kler.cn/news/365815.html

相关文章:

  • 一站式学习 Shell 脚本语法与编程技巧,踏出自动化的第一步
  • 代谢组数据分析(二十):通过WGCNA识别核心代谢物
  • 【云原生】Kubernets1.29部署StorageClass-NFS作为存储类,动态创建pvc(已存在NFS服务端)
  • uniapp 常用的地区行业各种多选多选,支持回显,复制粘贴可使用
  • (一)Mysql篇---Mysql整体架构
  • 数据仓库宽表概述
  • 【C/C++ Qt shared_ptr | make_shared | QSharedPointer 】绕圈圈
  • [Redis] Redis数据持久化
  • [项目详解][boost搜索引擎#2] 建立index | 安装分词工具cppjieba | 实现倒排索引
  • Element 的Table表格实现列合并(记得先排序、element-plus、列合并、线上已投入使用)
  • 同标签实现监听LocalStorage
  • python的文件常识
  • CTF-RE 从0到N:开始之前-c函数手册
  • 什么样的JSON编辑器才好用
  • TDengine 签约新奥新智:写入速度提升10倍,成本降低90%
  • 软件设计师----UML
  • JavaWeb合集16-JWT令牌验证
  • Coppelia Sim (v-REP)仿真 机器人3D相机手眼标定与实时视觉追踪 (一)
  • 【Sublime Text】设置中文 最新最详细
  • 【Android】Convenient ADB Commands
  • jupyter notebook改变默认启动路径
  • C++:map和set类
  • SQLITE排序
  • Vision Transformer 神经网络在水果、动物、血细胞上的应用【深度学习、PyTorch、图像分类】
  • 【web安全】缓慢的HTTP拒绝服务攻击详解
  • 从零开始:Python与Jupyter Notebook中的数据可视化之旅