如何删除 MAUI 中的标题栏并将 Windows 版本应用程序中的窗口大小固定为 800x400 像素?
我在网上查了很长时间,但发现一年多前发布的MAUI后续版本已经没有实际信息了。为什么 MAUI 不支持窗口调整大小并禁用其缩放作为条件 WPF,它还使用 XAML 来创建窗口,我希望发布时有这样的可能性。
标题栏看起来很破损,因为它比关闭/折叠/最大化按钮高。
我的 WinUI3 应用程序出现Microsoft.ui.xaml.dll
无法加载的异常。我已将 Microsoft.UI.Xaml 和 Microsoft.Graphics.Win2D 包含在 nuget 中。
System.DllNotFoundException
HResult=0x80131524
Message=Unable to load DLL 'Microsoft.ui.xaml.dll' or one of its dependencies: The specified module could not be found. (0x8007007E)
Source=TibraUI
StackTrace:
at TibraUI.Program.XamlCheckProcessRequirements()
at TibraUI.Program.Main(String[] args) in C:\Users\Bryan\src\tibra\Tibra\TibraUI\obj\x64\Debug\net6.0-windows10.0.19041.0\win10-x64\App.g.i.cs:line 28
Run Code Online (Sandbox Code Playgroud)
Windows 版本 21H1 内部版本 19043.1348
我的应用程序.xaml
<Application
x:Class="TibraUI.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:TibraUI">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
<!-- Other merged dictionaries here -->
</ResourceDictionary.MergedDictionaries>
<!-- Other app resources here -->
</ResourceDictionary>
</Application.Resources>
</Application>
Run Code Online (Sandbox Code Playgroud) 我刚刚开始学习WinUI 3.0 ,在 google 或像《学习 WinUI 3.0如何设置应用程序的默认窗口大小》这样的书籍中找不到任何信息。我知道在 UWP 中它可能是这样的
ApplicationView.PreferredLaunchViewSize = new Size(480, 800);
ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
Run Code Online (Sandbox Code Playgroud)
但实际上它在WinUI中不起作用
在 WPF 中,所有控件都继承 DispatcherObject,并且可以轻松访问 Dispatcher。
如何使用 WinUI 3 Windows App SDK 获取 DispatcherQueue 并在 ViewModel 中使用它?
编辑
我的实现扩展了 mm8 最受赞赏的答案。
在我的 ViewModel 中创建一个属性
public Microsoft.UI.Dispatching.DispatcherQueue TheDispatcher { get; set; }
然后在我的 MainPage.xaml.cs 代码隐藏中获取调度程序Constructor
ViewModel.TheDispatcher = Microsoft.UI.Dispatching.DispatcherQueue.GetForCurrentThread();
现在我的虚拟机中有调度程序,因此可以轻松地从虚拟机使用它:
TheDispatcher.TryEnqueue(() =>
{
// some ui thread work
});
Run Code Online (Sandbox Code Playgroud)
注意:我没有将此作为答案发布,因为有一个答案,这是我的实现,旨在帮助任何感兴趣的人。
标题说明了一切,文档似乎没有说明应该首选哪个。他们有相同的论点,你基本上也可以通过。
我认为它们在功能上都做同样的事情,但我需要了解我公司应用程序的最佳实践。我也没有看到这个问题。
我在 Windows 10 上开发了许多 UWP 应用程序,但在 Windows 11 上我有很多问题,有时 Microsoft 文档令人困惑。我想为 Windows 11 开发新应用程序,但我完全迷失了!
Windows App SDK 和 WinUI 3 有什么区别?我不明白 :(
开发 Windows 11 应用程序的最佳方法是什么?还是UWP?或者Windows应用程序SDK?还是WinUI 3?
UWP 没有圆角,对吗?我在 Visual Studio 2022 中使用 Windows 11 在计算机中创建一个新项目,只有我的应用程序的窗口具有圆角,但其他元素(例如按钮)没有圆角!
Mica 不只在 WinUI 3 中可用吗?
我正在尝试进行简单的页面导航,但无法找到有关如何在 WinUI 3.0 中执行此操作的任何文档。
目前,当我使用 WinUI 3.0 创建空白应用程序时,我在 App.xaml.cs 中创建了以下代码
protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
{
m_window = new MainWindow();
m_window.Activate();
}
private Window m_window;
Run Code Online (Sandbox Code Playgroud)
虽然我在网上找到了许多其他示例,但根框架是在上面的 OnLaunched 事件中定义的。
我如何定义 MainWindow.xaml 或 App.xaml,以便获得一个可以在 Page1.xaml 和 Page2.xaml 之间自由切换的框架?
编辑:我现在发现我可以通过调用来检索框架:
protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
{
m_window = new MainWindow();
Frame rootFrame = m_window.Content as Frame;
m_window.Activate();
rootFrame.Navigate(typeof(UI.MainMenu));
}
Run Code Online (Sandbox Code Playgroud)
但导航失败并出现System.NullReferenceException: 'Object reference not set to an instance of an object.'
错误。我做错了什么:S?
随着 WinUI-3 的到来,WPF 会过时吗?
说到桌面应用程序开发,是时候完全抛弃 WinForm/WPF 传统迁移到 WinUI-3 了吗?