本文由网友投稿。

作者:智州Ryan

原文标题:MAUI桌面端标题栏设置和窗口调整

原文链接:https://blog.csdn.net/Sir_aligaduo/article/details/128880940

写在前面

如果你现在开始学习并使用MAUI开发桌面端,那么接下来的问题相信你都会遇到并且会想着尝试找方法解决它。

问题

本人在使用目前VS2022最新版17.4 Professional版创建新的MAUI APP 基于.NET6.0项目时,发现完全找不到跟wpf一样的WindowStyle或者ResizeMode这样的属性,有点强迫症,一定要把这个标题栏去掉,想着应该不难,但是资料太少了,文档写的也很乱,根本无法对应到这个,找着找着,加到了Dotnet9网站站长[1],在他耐心的帮忙下,我解决了这个问题,所以特别感谢Dotnet9网站站长风中一匹狼!

maui自带的windows下的窗口是这样的(完全不在我审美上):

解决方法

一开始,我是根据站长网站里提供的方法,链接: Maui学习之路(1)-Windows窗体设置[2]尝试解决该问题。

虽然能正常根据里面操作了,但是我操作的时候可能是我操作的问题,老是实现不了,只把标题栏跟下面的content融在一起,标题栏还是在那,而且我不好改颜色。

加了站长微信,站长耐心的帮我找了大佬Chister.Wu的Demo, 对照他的Demo终于是把这个问题解决了,现在总结下去掉原标题栏的方法。

  1. 完美去掉标题栏,下面是代码,写在MauiProgram.cs里配置生命周期方法,具体的资料在上面的链接: Maui学习之路(1)-Windows窗体设置 里也有,但是看起来比较麻烦,直接看代码可能好理解一点:

var builder = MauiApp.CreateBuilder();
builder.UseMauiApp<App>().ConfigureFonts(fonts =>{fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");}).ConfigureLifecycleEvents(events =>{#if WINDOWSevents.AddWindows(windows => windows.OnWindowCreated(window =>{//window.SizeChanged += OnSizeChanged;MauiWinUIWindow mauiwin = window as MauiWinUIWindow;if (mauiwin == null) { return; }//关闭扩展内容mauiwin.ExtendsContentIntoTitleBar = false;mauiwin.Title = "Hello Maui";通过maui窗口句柄获取appwindow---///这里有个操蛋的东西我用最新版新建的工程没法直接getappwindow所以用了文章里的方法var wndId = Microsoft.UI.Win32Interop.GetWindowIdFromWindow(mauiwin.WindowHandle);Microsoft.UI.Windowing.AppWindow appwin = Microsoft.UI.Windowing.AppWindow.GetFromWindowId(wndId);//对于OverlappedPresenter的解释文档在这个网址//https://learn.microsoft.com/zh-tw/windows/windows-app-sdk/api/winrt/microsoft.ui.windowing.overlappedpresenter?view=windows-app-sdk-1.2//大致就是OverlappedPresenter会设置这个窗口,这个窗口可以和其他窗口重叠,并对窗口标题栏 状态栏 工作栏进行设置,以及其他一些调整窗口的操作var customOverlappedPresenter = Microsoft.UI.Windowing.OverlappedPresenter.CreateForContextMenu();appwin.SetPresenter(customOverlappedPresenter);}));
#endif});return builder.Build();

原理就是重写创建窗口的方法,在这里重写有个好处,窗口加载之后会刷新,我在Mainpage.cs下写Loaded的方法的话虽然标题栏的按钮去掉了,但是标题栏那块并没有去掉,把站长的文章和Demo给的结合起来才实现了这样的效果。

效果图如下, 完美去掉了:

  1. 直接在MainPage里写Loaded方法,这也是一开始我用的方法,代码如下:

private void ContentPage_Loaded(object sender, EventArgs e){#if WINDOWSvar winuiWindow = Window.Handler?.PlatformView as  Microsoft.UI.Xaml.Window;MauiWinUIWindow maui = winuiWindow as MauiWinUIWindow;winuiWindow.ExtendsContentIntoTitleBar = false;if (winuiWindow is null)return;var wndId = Microsoft.UI.Win32Interop.GetWindowIdFromWindow(maui.WindowHandle);Microsoft.UI.Windowing.AppWindow appWindow = Microsoft.UI.Windowing.AppWindow.GetFromWindowId(wndId);//var appWindow = maui.GetAppWindow();if (appWindow is null)return;var customOverlappedPresenter =  Microsoft.UI.Windowing.OverlappedPresenter.CreateForContextMenu();appWindow.SetPresenter(customOverlappedPresenter);
#endif}

不足之处就是她会有一个类似WPF的captionheight标题栏那样的东西,视图没完全刷新。

以上就是去标题栏的方法,想要代码的可以去gitee上自己下载,链接: maui-title-handle-demo[3]

另外对于后续窗口的大小调整,自定义放大缩小按钮可以参考MauiDemo[4],注意一定要看清自己的项目配置。

参考文章:

  • Maui学习之路(1)-Windows窗体设置

参考Demo

MauiDemo

参考资料

[1]

Dotnet9网站站长: https://dotnet9.com

[2]

Maui学习之路(1)-Windows窗体设置: https://dotnet9.com/2022/06/Maui-Learning-Road-One-Windows-Form-Settings

[3]

maui-title-handle-demo: https://gitee.com/ryanruien/maui-title-handle-demo

[4]

MauiDemo: https://github.com/WPFDevelopersOrg/Demo

MAUI桌面端标题栏设置和窗口调整相关推荐

  1. 计算机桌面颜色如何设置标准,电脑调整桌面颜色设置_电脑桌面颜色设置

    2016-12-09 09:18:44 具体方法如下:1.鼠标点击桌面右键,属性2.打开显示属性圣话框,选择"外观"选项高级3.打开高级外观对话框,选择"项目" ...

  2. IDEA使用过程中相应的配置和设置(如编码设置、窗口调整以及config.xml文件模板创建、工程打开方式、约束文件)

    1. IDEA调整工具栏的位置(原来在右边,现在调整到左边),[View]-->[Appearance]-->[Toolbar] 2. IDEA调整代码区背景([File]-->[S ...

  3. 【转】android软键盘显示与主窗口调整方式设置,Android软键盘显示模式及打开和关闭方式(推荐)...

    Android软键盘显示模式: Android定义了一个属性,名字为windowSoftInputMode,用它可以让程序可以控制活动主窗口调整的方式.我们可以在AndroidManifet.xml中 ...

  4. 得物商家客服桌面端Electron技术实践

    1.业务背景 随着公司业务的快速发展,商家客服也纳入了我们的服务范围,商家客服工作台的定位是通过工具和数据服务商家,一站式解决用户购买咨询诉求.通过工具和运营策略协助商家提升服务品质,让品牌商家有动力 ...

  5. ubuntu四个屏幕设置_Linux_从9个方面来立体式地美化Ubuntu 桌面,总结了一下桌面美化的设置。 - phpStudy...

    从9个方面来立体式地美化Ubuntu 桌面 总结了一下桌面美化的设置.适合新得发亮的新手.前提是,你已经设置好你的软件源.本文大多数都跟www.gnome-look.org有关,你可以自己去研究一下. ...

  6. 语雀桌面端技术架构实践

    作者:易芝林(维骏) 语雀桌面端作为语雀为用户提供的生产力工具,上线两年多来一直保持高频的迭代和健康的业务增长.本次主要介绍我们在做桌面端时的一些技术架构思考和实践,同时也将分享我们沉淀的一些通用桌面 ...

  7. Windows桌面端录屏采集实现

    实时屏幕共享功能,在视频会议.游戏直播.在线教育等场景中已广泛被应用.近日,主打屏幕分享的社交应用「Squad」被Twitter收购,让我们看到了实时屏幕共享融于更多行业,开启丰富玩法的趋势. 作为实 ...

  8. 喧喧发布 2.5.1 版本,支持移动版和桌面端同时登录

    喧喧是由然之协同团队推出的一款轻量级的开源企业聊天软件.提供企业内部通讯交流.企业通讯录.协同办公通讯交流.企业IM解决方案. 喧喧官网: https://xuan.im/ 喧喧发布2.5.1版本,本 ...

  9. 6种电脑录屏工具,免费在线,桌面端Windows和Mac均适用

    如果你想做一个教程类博主,不管是游戏类的,科技类的,还是语言类的,你首先需要一个不错的电脑录屏工具.自自媒体大流行开始以来,对电脑屏幕录制的需求有不断增长.来自不同领域的专业人士,例如教育领域的专业人 ...

最新文章

  1. java jprofile安装与使用
  2. 用VS向SharePoint中部署添加List 并指定应用的Content Type
  3. mysql 数据库编程_MySQL数据库编程(C++语言)
  4. 关于jquery的ajax编码的另类解决方案,巨简便
  5. Centos7.4系统下安装httpd,mariadb,php7.1环境运行禅道
  6. SAP License:COPA凭证冲销
  7. python数据结构-数组/列表/栈/队列及实现
  8. 采用Locust对grpc协议进行压测
  9. CentOS 7 之安装 Oracle 11gR2
  10. 从零开始学安全(二十三)●用PHP编写留言板
  11. Hyper-V云解决方案-IT产业新变革
  12. 导入项目运行报错:Error starting ApplicationContext. To display the conditions report re-run your application
  13. win7没有显示wifi连接到服务器,Win7笔记本电脑搜不到无线网络(Wifi)怎么办?...
  14. 测试一枚-记录工作-覆盖率(二)
  15. 虎牙直播怎么换html5,虎牙直播助手怎么改名字 昵称更换方法
  16. 【Unity】AvProVideo 实现当前视频播放完毕自动加载下一视频
  17. fortran matlab eng,[转载]关于MATLAB转FORTRAN的几点注意
  18. 安卓版按键精灵内存读取游戏人物的坐标详细教程
  19. HorizontalScrollView实现Gallery
  20. 【03yy and triangle】

热门文章

  1. 22事件(简略版事件声明方式)
  2. BatchNorm+激活函数
  3. 展豪说 41-80d
  4. flutter 布局 Stack Positioned的混合操作 两个组件Container重叠 构建背景圆角操作 类似css的relative
  5. 关于希尔排序的一大坑,与冒泡排序有关千万注意
  6. java表单验证手机号码位数_正则手机号码验证(一)
  7. php两个时间戳相隔多少天
  8. 【正点原子FPGA连载】 第八章 LED灯闪烁实验摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0
  9. 2021年低压电工找解析及低压电工模拟考试题
  10. java项目文件预览的几种方式