问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

WinUI3开发(补档):我的第一个WinUI3

发布网友 发布时间:2024-09-17 02:16

我来回答

1个回答

热心网友 时间:2024-10-26 16:03

返回目录

注意:这个系列的内容正在逐步迁移到我的GitHub中,这个知乎账户由于某些特殊原因将会弃用

开始之前:自我介绍

先介绍一下我自己吧:我,ConiMite,简称Coni,玩MC的时候叫ntcho,是一个渣渣中的渣渣(

我个人比较擅长的语言是Python,C#呢也就是为了学习UWP以及WASDK才学的,所以自然而然不如Python顺手

因此,你可能会在我的任何一个C#的仓库中看到以下现象:

1、C#中嵌套着Python代码 2、一块代码复制n遍,靠复制解决问题 3、没有注释,同样的功能写两边( 4、借鉴其他的开源代码来实现部分功能(( 5、屎山(((

至于为什么入门呢?也就是觉得好看罢了~

为了更好交流,已经建立讨论群:750935016,欢迎加群讨论(当然你也会看到群主在那里问问题)

这一个系列,都事使用Xanl+C#开发

同时,这一系列,是个人记录用,写的肯定不好,不详细,别喷啊!

还有一点,这个系列的仓库我都扔到GitHub力,文章在哪仓库就在哪~

好了,不废话了,进入正题

这个项目,作为第一个应用,就会先说说创建窗口,以及窗口绑定页面(算作绑定?)

WinUI3是个啥?

~~WinUI3事WinUI3(即答)~~

看看微软的解释:

说白了,就是个UI库,可以给UWP使,也可以给Win32使(个人理解)

创建一个WinUI3应用

首先,你得有个Visual Studio 2022

直接创建WinUI3

然后,安装的时候选择.Net桌面开发和通用Windows平台开发这俩个工作负荷

在.Net桌面开发中有个Windows应用SDK C#模板,把它选上

最后大致长这样,其他的自己可以看着选选

安装后,就可以创建项目了

在项目类型中选WinUI就行了,你会看到3个项目(就是上图后面那仨蓝色图标的,第一个文后会说)

关于已打包项目和使用Windows应用程序打包项目打包项目这俩的区别,就是一个创建了项目里面没有打包项目(共1个项目),另一个有(共2个项目)

我个人的理解是,已打包项目就是将打包项目扔到了WinUI3这个项目里边了(因为AppxManifest.xml在)

但这俩选了后,开发的效果应该是一样的(自我感觉)

Temlate Studio

~~这东西应该会有人熟悉吧,反正我是用不习惯~~

这个东西就是给你个模板,这样创建应用会快一些

可以选的模板有菜单栏和导航栏,以及啥也没有这三种

这玩意后面可以通过向导创建页面,如果你创建设置的话,里面自带切换深浅色的一个设置项

这个东西还支持创建各种的页面,看看图就知道有哪几种

但是,有一点要注意:这个东西用的设计模式只有MVVM模式,项目结构有些复杂(个人感觉),如果是个纯小白,没有接触过WPF/UWP/WinUI3项目开发的,或者不知道MVVM是啥的,别用,等着熟悉了后再试试吧。。。

最后,这个东西是个Visual Studio扩展,需要单独安装

创建完了,瞅瞅

创建项目完了后,你就可以开始开发了。创建项目的时候已经给你了模板,自带一个按钮

选择VisualStudio上方编辑栏的本地计算机就可以运行看看了

试试开发

本部分目标:创建一个窗口,并在单击窗口的时候唤起这个窗口,以及最基本的按钮操作和最基本布局的介绍

创建一个窗口

仓库提交:c83b176

首先肯定是要创建一个窗口。这点很简单:

右击项目->添加->新建项->显示所有模板(如果已经有模板了就不用这一步)->WinUI->空白窗口->命名创建

这样,你就会在项目里面得到一个空白的窗口(我创建的文件是AnotherWindow.xaml)

往新建的窗口中加一个按钮

打开AnotherWindow.xaml,这个xaml就是存放UI代码的地方了

xaml和继承了许多xml的特点,同时,开发的方式也和html差不多

里面已经写好了很多东西,上面的那一堆可以先不管,先看那个

这个就是网格布局,就是整个窗口的布局

我们要往布局里面放一个按钮:很简单,就在之间加点代码就行

这行代码的意思比较明确,就是一个按钮,按钮上的文字是AnotherWindow

让窗口上的按钮唤起另一个窗口

仓库提交:c380b2b

刚才创建了个窗口,但是运行后还是没有用,因为程序启动后还是唤醒刚才最开始模板自带的窗口(MainWindow)

MainWindow中有一个按钮,那我们可以尝试用那个按钮唤起

打开MainWindow.xaml,你会发现一些代码。同样上面的不管,看中间的这段:

稍微的解释一下:

也是布局,可以理解为水平布局或垂直布局 Orientation="Horizontal"代表着这时的StackPenel是水平的,垂直的话用Orientation=Vertical" VerticalAlignment="Center"指里面的控件(按钮啥的),是从中间开始摆 就是在布局里面放一个非常普通的按钮,中间的文字相当于Content,是显示在按钮上的 x:Name="myButton的意思是这个按钮的“名字”叫做myButton,后面写C#的时候操控这个按钮就要用这个名字 Click="myButton_Click是指按下按钮后的操作是调用myButton_Click这个函数,一会会在代码文件中写

代码非常简单明确,也比较易懂(

然后打开MainWindow.cs(找不到的把MainWindow.xaml展开),前面那堆引用先不管

看到这点代码:

这个就是初始化这个窗口,要不然xaml中的控件在代码中全都没法用

然后看底下的一段代码:

这个就是传说中按下按钮触发的操作myButton_Click

后面的参数可以先不管

而myButton.Content = "Clicked的作用就是把myButton的Content,也就是显示的东西,变成“Clicked”

myButton就是前面用x:Name来定义的名字

所以,如果我们要让这个按钮的的操作是唤起窗口,就要对这个函数下手~

改成这样,直接粘贴~

简单解释一下,还是这个函数

在函数外面,有个private Window m_window;,定义了m_window的类型是Window 然后,在函数里面m_window = new AnotherWindow();向m_window赋值,是AnotherWindow 最后,m_window.Activate();是将m_window中的Window给唤醒起来

最后大概的效果:

继续开发

文章就到这里了,后面记几句

一些工具可以帮助我们继续开发

1、WinUI3 Gallery(官方控件,里面的控件库挺好的)

2、Windows Community Toolkit Gallery(社区控件,里面的控件库挺好的)

3、微软官方的文档(毕竟是官方的。。。文档)

总结

这篇文章中,我们创建了一个WinUI3应用,并在应用中创建了一个新的窗口,使主窗口中的按钮唤起这个窗口

同时,我们还认识了按钮控件以及Grid和StackPanel两个布局

下一篇再对窗口做点补充,bye~
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...△=口+口+口,问△、o、口谁大谁小,小学一年级数学期末附加题_百度知 ... 一年级数学△ +△ +〇 +〇 +〇=27,△ +△+ 〇 +〇+ △ +△=22问△=... 上海南浦大桥长途客运中心到虹桥机场第二航站楼怎么走? 上海浦东国际机场2号航站到上海长途汽车客运总站,最快怎么走,用时多少... 从上海长途汽车客运总站到虹桥机场2号航站楼 木头爱上烈火简介 省直遴选面向哪些群体? 义务教育阶段的学生有什么权利和义务? ngclz型带制动轮鼓形齿式联轴器内容简介 GⅡCL型基本型(窄型)鼓形齿式联轴器基本参数 pywin32,一个超实用的Python库 win32ui模块PY2EXE打包出错,求助 python问题,NameError: name 'messagebox' is not defined 怎么回事啊... 苹果14上市时间已定,iphone14什么时候发布? 苹果iPhone 14发布会真的定在9月7日吗? iphone14发布会日期什么时候(关于苹果14系列的参数分析) 敲诈勒索未遂罪判刑标准 经常开WLAN热点的手机会坏吗 手机一直开热点手机会坏吗 win10系统安装CAD闪退怎么解决? 如何在win10上使用cad2010? ipad无法下载炫舞手游 东方光驱魔术师的介绍 您好我今年53岁停经10个月了子宫内膜厚达到12以上有什么不好?_百度知 ... 虚拟光区适用于什么类型文件 VISTA系统下DFI文件如何打开 子宫内膜增厚有没有啥危害?唐河康桥红会医院几点下班? 辛集市澳森热力有限公司怎么样? 辛集澳森钢铁几台高炉热风炉 如何做带货达人 新手小白如何成为直播带货达人 python如何写api接口? 抖音变身漫画人物怎么弄的_抖音变身漫画人物方法介绍 126邮箱的人工客服电话有么? 突然胸疼怎么回事女性(女性应该如何保养胸部) 前胸部疼痛是什么原因 女性右侧胸里面刺疼怎么回事 swimming动词怎么写 运输费什么发票 没有驾驶证能代开运输费发票吗? 怎么在126邮箱设置登录密码 失信人名单没有代表什么 被执行人没有上失信执行人名单,限制出境吗 电视投屏手机怎么没声音了? 电吉他插电脑上面没有声音??需要怎么设置的呢,还是需要什么软件??我... 怎么投屏没有声音? 苹果手机镜像投屏到电视怎么把声音留在手机上 手机投屏电脑没有声音是怎么回事? 微信怎么备注和设置标签? 为什么卡支付不了钱 苹果x屏幕使用时间怎么不显示了?