2.XAML基础

简介: 2.XAML基础

一、创建项目

打开Visual Studio2022,首页点开“创建新项目(N)”,找到WPF应用程序,选择下一步。


28b57481d39d4926ad14c4be3118846c.png


依次输入“项目名称”,选择“位置”,输入“解决方案名称”和选择“框架”,点击“创建”,即可创建新项目。


二、XAML基础

进入项目中,点开MainWindow.xaml文件,基础规则如下:


3ab1180b7d69433c8702e8a69c5c0484.png


1.Loaded事件:

<Window x:Class="WpfApp.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:WpfApp"
            mc:Ignorable="d"
            Title="MainWindow" Height="450" Width="800" Loaded="Window_Loaded">
        <Grid Name="grid1">
        </Grid>
    </Window>
    private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                this.Title = this.grid1.Name;
            }

运行效果图,名称由MainWindow变成grid1。

229436e652bc4af6a88f591dd69db781.png



2.复杂属性:

例如:Grid控件有一个Background属性,该属性允许提供用于绘制控件背景区域的画刷。代码如下:

    <Grid Name="grid1">
            <Grid.Background>
                <LinearGradientBrush>
                    <LinearGradientBrush.GradientStops>
                        <GradientStop Offset="0.00" Color="red"/>
                        <GradientStop Offset="0.50" Color="Yellow"/>
                        <GradientStop Offset="1.00" Color="BlueViolet"/>
                    </LinearGradientBrush.GradientStops>
                </LinearGradientBrush>
            </Grid.Background>
        </Grid>

运行效果图:

3c74b93d30134a56aa6bd2e2b0e70de0.png


以上内容也可以通过“属性”面板实现:

c350b216dde240ddabf66e02e5e43f7f.png


3.附加属性

按照下图设置:

ad807c6605844eb590e3598827b2fdec.png

06b02bfc62774931944f9b87b50d9189.png



然后依次在三个区域添加三个按钮,代码变成:

  <Grid Name="grid1">
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <Grid.Background>
                <LinearGradientBrush>
                    <LinearGradientBrush.GradientStops>
                        <GradientStop Offset="0.00" Color="red"/>
                        <GradientStop Offset="0.50" Color="Yellow"/>
                        <GradientStop Offset="1.00" Color="BlueViolet"/>
                    </LinearGradientBrush.GradientStops>
                </LinearGradientBrush>
            </Grid.Background>
         <!--三个按钮-->
            <Button Content="Button1" HorizontalAlignment="Left" Margin="332,72,0,0" VerticalAlignment="Top"/>
            <Button Content="Button2" HorizontalAlignment="Left" Margin="332,72,0,0" VerticalAlignment="Top" Grid.Row="1" />
            <Button Content="Button3" HorizontalAlignment="Left" Margin="332,72,0,0" VerticalAlignment="Top" Grid.Row="2" />
        </Grid>

4.特殊字符或空白

特殊字符 字符实体
小于号(<) & lt;
大于号(>) & gt;
&符号(&) & amp;
引号(“) & quot;


三、事件


例如:Button控件提供了Click事件。代码如下:

    <Grid>
            <Button Width="200" Height="40" Click="Button_Click">按钮</Button>
        </Grid>
 private void Button_Click(object sender, RoutedEventArgs e)
            {
                MessageBox.Show("您刚刚点击了按钮");
            }

097ad9820b8f43d5aa3be343a527f8b8.png


目录
相关文章
|
6月前
|
JavaScript 开发工具 git
免费个人博客搭建,使用vuepress和plume主题在github上搭建一个免费的个人博客
通过`VuePress`和`Plume主题`,你可以在GitHub上快速搭建一个免费的个人博客,无需购买域名或服务器。本文详细介绍了从环境搭建到部署的全流程,包括安装Node.js、pnpm、VuePress等工具,使用命令行初始化项目,编写Markdown文章,以及将项目部署到GitHub Pages。按照教程操作,任何人都能拥有自己的在线博客,简单高效!访问我的博客[https://spionbo.github.io/](https://spionbo.github.io/)查看效果。
141 1
|
6月前
|
人工智能 缓存 运维
运维人不用秃头了?AI自动化配置管理了解一下!
运维人不用秃头了?AI自动化配置管理了解一下!
159 0
|
移动开发 前端开发 Android开发
【Uniapp 专栏】Uniapp 相较于其他跨平台框架的优势
【5月更文挑战第15天】Uniapp 是一款高效率的跨平台框架,一套代码可生成 iOS、Android、H5 等应用,减少重复工作。它具有强大兼容性,保证各平台稳定运行,提供一致体验。Uniapp 社区活跃,资源丰富,学习曲线平缓,适合新手。性能优化出色,可扩展性强,全面支持前端技术,降低开发和维护成本。因此,Uniapp 成为跨平台开发的热门选择。
537 0
【Uniapp 专栏】Uniapp 相较于其他跨平台框架的优势
|
存储 自然语言处理 供应链
跨境电商团队如何高效管理项目?这5款协作工具值得尝试
跨境电商团队面临的全球化供应链、跨文化沟通、时区差异及语言障碍等挑战,可通过选择合适的协作工具来克服。推荐工具包括板栗看板、Trello、Slack、Asana和Zoom,它们分别在任务管理、即时通讯、项目跟踪和视频会议等方面提供强大支持,帮助团队提升效率、确保任务高效执行和顺畅沟通。
跨境电商团队如何高效管理项目?这5款协作工具值得尝试
|
机器学习/深度学习 人工智能 机器人
语音克隆达到人类水平,微软全新VALL-E 2模型让DeepFake堪比配音员
【8月更文挑战第10天】微软的VALL-E 2模型标志零样本语音合成新高度,通过重复感知采样与分组编码建模,显著提升语音合成的稳定性与效率。在LibriSpeech等数据集上,VALL-E 2的语音自然度与说话者相似度超越前代和其他系统,达到人类水平。然而,其卓越性能也引发了潜在滥用风险的关注。尽管如此,VALL-E 2在辅助沟通、教育、娱乐等领域的应用前景广阔。[论文](https://arxiv.org/pdf/2406.05370)
410 64
|
机器学习/深度学习 算法 调度
AdEMAMix: 一种创新的神经网络优化器
9月发布的一篇论文中,Pagliardini等人提出了AdEMAMix,一种新的优化算法,旨在克服Adam及其变体(如AdamW)在利用长期梯度信息方面的局限性。通过结合两种不同衰减率的指数移动平均(EMA),AdEMAMix能够更有效地利用历史梯度信息。实验结果显示,AdEMAMix在语言建模和视觉任务中均显著优于AdamW,不仅能加速模型收敛,还能提高学习稳定性。尽管引入了额外计算步骤,但开销极小,展示了在大规模神经网络训练中的潜力。论文详细探讨了其核心思想、实验设置及未来研究方向。
388 8
AdEMAMix: 一种创新的神经网络优化器
|
机器学习/深度学习 编解码
mmseg配置解析 contract_dilation=True
`contract_dilation=True` 是 ResNetV1c 中的一种设置,用于解决多层膨胀卷积中的“栅格效应”。通过调整膨胀率,使卷积核在不同阶段更密集地覆盖输入特征图,避免信息丢失,提升特征提取质量,尤其在语义分割任务中效果显著。
265 0
|
机器学习/深度学习 算法 机器人
论文介绍:使用仿真和领域适应提高深度机器人抓取效率
【5月更文挑战第11天】研究人员提出结合仿真数据和领域适应技术提升深度机器人抓取效率。通过在仿真环境中生成多样化抓取数据并使用GraspGAN和DANN进行像素级和特征级适应,使模型能在现实世界中更好地泛化。实验表明,这种方法能减少现实数据需求,同时保持高抓取性能。尽管面临物理差异和成功率挑战,该研究为机器人抓取技术的进步提供了新途径。论文链接:https://arxiv.org/abs/1709.07857
249 5
STM32CubeMX 外部中断
STM32CubeMX 外部中断
744 0
|
机器学习/深度学习 算法 数据挖掘
机器学习(十九)EM:期望最大算法
机器学习(十九)EM:期望最大算法
703 0
机器学习(十九)EM:期望最大算法