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

这篇具有很好参考价值的文章主要介绍了MAUI桌面端标题栏设置和窗口调整。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

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

问题

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

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

MAUI桌面端标题栏设置和窗口调整,MAUI,microsoft,wpf,windows,ui

解决方法

一开始,我是根据站长网站里提供的方法
链接: Maui学习之路(1)-Windows窗体设置.
虽然能正常根据里面操作了,但是我操作的时候可能是我操作的问题,老师实现不了,只把标题栏根下面的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 WINDOWS
        events.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给的结合起来才实现了这样

效果图,完美去掉了:MAUI桌面端标题栏设置和窗口调整,MAUI,microsoft,wpf,windows,ui

2.直接在MainPage里写Loaded方法,这也是一开始我用的方法,代码如下:
不足之处就是她会有一个类似WPF的captionheight标题栏那样的东西,视图没完全刷新

private void ContentPage_Loaded(object sender, EventArgs e)
    {

#if WINDOWS
        var 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
    }

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

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

参考文章:
Maui学习之路(1)-Windows窗体设置.

参考Demo
MauiDemo.文章来源地址https://www.toymoban.com/news/detail-663913.html

到了这里,关于MAUI桌面端标题栏设置和窗口调整的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VS+Qt设置窗口尺寸(二):窗体控件自适应窗口布局,自动调整大小

    VS版本:VS2019 QT版本:Qt5.12.3(msvc2017_64) 为了适配不同尺寸的显示屏,软件窗口需要调整大小,窗口内的控件尺寸也要适配窗口的大小。 本例重点讲述如何设置可调整尺寸的窗口及控件,实现窗口最大化和尺寸调节。 本例使用相对简单的按键和文本框来做示例,其他控件均可

    2023年04月23日
    浏览(67)
  • Qt Windows 去掉标题栏后 最大化窗口时任务栏被窗口遮住问题

    在写Qt窗口时,假如对窗口设置了 Qt::FramelessWindowHint 或者 Qt::CustomizeWindowHint 标志,会发现窗口在副屏上最大化会遮住任务栏。 假如自己实现最大化来解决这个问题,虽然能够解决,但窗口状态就需要自己维护 在Windows中通过拦截窗口消息的方式可以更优雅的解决这个问题 在

    2024年02月05日
    浏览(30)
  • 【无标题】Unity随手记——给Scene窗口内的物体设置SelectIcon

    由于开发项目,某个Scene场景内会有很多的静态物体。我们在Hierarchy窗口中选中后,虽然有三维坐标显示在物体上,但是也很难分辨。 于是unity提供了给编辑物体设置icon。  这些icon大家都很熟悉了吧。 问题来了,如果是一个两个物体,我手动设置下没问题。如果几十个,或

    2023年04月09日
    浏览(24)
  • 解决windows由于分辨率调整导致的桌面图标位置乱序

    https://www.zhihu.com/question/328534753 https://baijiahao.baidu.com/s?id=1724804313296173730wfr=spiderfor=pc windows电脑由于连接(扩展)外接显示器、全屏游戏、远程桌面连接等会导致分辨率调整,从而导致桌面上排列好的图片会变乱,这里有两种方式解决: 通过修改注册表项来解决 通过桌面图标

    2024年01月23日
    浏览(69)
  • WPF自定义控件库之Window窗口

    在WPF开发中,默认控件的样式常常无法满足实际的应用需求,我们通常都会采用引入第三方控件库的方式来美化UI,使得应用软件的设计风格更加统一。常用的WPF的UI控件库主要有以下几种,如: Modern UI for WPF , MaterialDesignInXamlToolkit ,PanuonUI,Newbeecoder.UI,WPF UI , AduSkin ,

    2024年02月08日
    浏览(33)
  • iPad远程控制Windows PC - Microsoft远程桌面

    有时我们坐在客厅里,想来一局游戏,怎奈何主机太远,接不上电视,这个时候我们就可以利用iPad当作中继器,插上电视,享受大屏带来的震撼...... 有时我们躺在床上,不想到电脑上玩游戏,我们就可以用iPad远程游戏,低延迟也可以让我们大展拳脚...... Microsoft远程桌面详细

    2024年02月06日
    浏览(30)
  • Flutter笔记:桌面应用 窗口定制库 bitsdojo_window

    Flutter笔记 桌面应用窗口管理库 bitsdojo_window 作者 : 李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 : 291148484@163.com 本文地址 :https://blog.csdn.net/qq_28550263/article/details/134464678 高级:多窗口管理,请跳转到:《Flutter桌面端应用多窗口管理》,地址:https://jclee95.blog.csdn.net

    2024年02月01日
    浏览(27)
  • C# Windows API应用:获取桌面所有窗口句柄的方法

    C# Windows API应用:获取桌面所有窗口句柄的方法 在 C# 的 Windows 应用程序开发中,我们常常需要获取桌面上所有窗口的句柄,以便进行一些窗口管理或者后续操作。本文将介绍一种利用 Windows API 获取桌面所有窗口句柄的方法,并提供相应的源代码和描述。 在开始之前,我们需

    2024年02月05日
    浏览(34)
  • Mac电脑远程连接Windows桌面Microsoft Remote Desktop

    怎么用Mac电脑远程控制Windows呢?Microsoft Remote Desktop是一款运行在Mac平台上的微软远程桌面连接工具,配置连接时,Microsoft远程桌面允许您决定应使用的分辨率,颜色质量,全屏模式,是否要全屏启动会话,是否使用所有尖视器,或者内容应该缩放。使用这款软件用户就可以轻

    2024年02月02日
    浏览(40)
  • MAUI 框架开发 将 MAUI 嵌入到 WPF 控件里

    本文将介绍如何将 MAUI 的底层替换为 WPF 框架层,且将 MAUI 的内容嵌入到 WPF 的一个控件里面,无 UI 框架嵌入的空域问题 本文是 MAUI 框架开发博客,而不是 MAUI 应用开发博客,本文更多介绍的是进行 MAUI 这个框架的开发内容。不熟悉或不进行 MAUI 框架开发的伙伴也可以看着玩

    2024年02月17日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包