我尝试开始使用 .Net MAUI,并按照以下描述的步骤设置了我的开发环境:
我还运行了“maui-check”CLI 工具,一切都已检查完毕,但是当我使用 Visual Studio 2019 v16.11.0 Preview 2.0(在 Windows 10 Home 20H2 上运行)创建新的 .NET MAUI 应用程序时,我得到了“当前上下文中不存在名称“InitializeComponent”构建错误。它还找不到对表单上任何控件的引用,例如“当前上下文中不存在名称“CounterLabel””
我已经尝试了这篇文章中的几乎所有内容。名称“InitializeComponent”在当前上下文中不存在,其中包含添加和删除文件、进行更改以及将其改回等建议......基本上除了在许愿井中扔一分钱之外的所有内容。
我发现一个常见的错误是命名空间不匹配,但以下是我所显示的命名空间是正确的:
应用程序.xaml:
<Application xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:MauiApp1"
x:Class="MauiApp1.App">
...
</Application>
Run Code Online (Sandbox Code Playgroud)
应用程序.xaml.cs
using Microsoft.Maui;
using Microsoft.Maui.Controls;
using Microsoft.Maui.Controls.PlatformConfiguration.WindowsSpecific;
using System;
using Application = Microsoft.Maui.Controls.Application;
namespace MauiApp1
{
public partial class App : Application
{
public App()
{
InitializeComponent(); <-- This is throwing the build error...
}
protected override IWindow CreateWindow(IActivationState activationState)
{
this.On<Microsoft.Maui.Controls.PlatformConfiguration.Windows>()
.SetImageDirectory("Assets");
return new Microsoft.Maui.Controls.Window(new …Run Code Online (Sandbox Code Playgroud) 我只想为 MacOS 和 Windows 制作一个项目,不需要 Android 或 iOS。我尝试从名为“Platforms”的文件夹中删除平台,但它们似乎会重新生成每个编译。是否有官方方法仅针对必要的平台?我查看了多个项目文件,但 Android 和 iOS 标签分散在各处。
有人可以帮我解决这个问题吗?
我是移动应用程序开发新手,正在学习 .NET Maui。我正在创建的应用程序需要侦听加速计事件,并在事件满足特定条件时向 Web 服务发送通知。我正在努力解决的问题是如何让应用程序在后台运行,即没有可见的 UI,而不进入睡眠状态,因为我希望用户完全关闭 UI。所以我认为应用程序需要作为某种服务运行,并可以选择在需要时显示 UI - 如何才能做到这一点?
如何在 MAUI 中设置窗口大小?
背景信息:我只关心此应用程序的 Windows - 我选择了 MAUI,因此我可以将 Blazor 用于桌面应用程序。由于某种原因,默认窗口尺寸很大(几乎占据了我所有的 1440p 屏幕空间)。我正在制作的应用程序只需要大约 600x600。尽管我很高兴让应用程序能够响应,但有一种方法可以固定窗口大小也会很有帮助。
这个问题是关于两个 MAUI 控件 (Switch和ListView) - 我在同一个问题中询问它们,因为我期望两个控件的问题根本原因是相同的。它们完全有可能是不同的问题,只是有一些共同的症状。(CollectionView有类似的问题,但其他混杂因素使得演示变得更加困难。)
我在 MAUI 应用程序中使用 2 路数据绑定:对数据的更改可以直接来自用户,也可以来自检查规范数据是否已在其他地方更改的后台轮询任务。我面临的问题是,对视图模型的更改不会在视觉上传播到Switch.IsToggled和ListView.SelectedItem属性,即使控件确实引发了事件,表明它们已经“注意到”属性更改。其他控件(例如Label和Checkbox)在视觉上进行了更新,表明视图模型通知工作正常并且 UI 本身总体上是健康的。
构建环境:Visual Studio 2022 17.2.0 预览版 2.1
应用程序环境:Android,模拟器“Pixel 5 - API 30”或真实 Pixel 6
示例代码全部如下,但根本问题是这是否是我的代码中的某个错误(我是否需要“告诉”控件因某种原因更新自身?)或者可能是 MAUI 中的错误(在这种情况下我应该大概报告一下)?
下面的示例代码可以直接添加到“文件新项目”MAUI 应用程序(名称为“MauiPlayground”以使用相同的命名空间),或者可以从我的演示代码存储库中获取。每个示例都是独立的 - 您可以只尝试一个。(然后更新App.cs以设置MainPage正确的示例。)
这两个示例都有一个非常简单的情况:一个双向绑定到视图模型的控件,以及一个更新视图模型属性的按钮(以模拟真实应用程序中的“数据已在其他地方修改”)。在这两种情况下,控件在视觉上都保持不变。
请注意,我{Binding ..., Mode=TwoWay}在这两种情况下都指定了,即使这是这些属性的默认值,只是为了非常清楚地表明这不是问题。
该ViewModelBase代码由两个示例共享,并且只是一种便捷的引发方式,INotifyPropertyChanged.PropertyChanged无需任何额外的依赖项:
ViewModelBase.cs:
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace MauiPlayground; …Run Code Online (Sandbox Code Playgroud) 我在 Microsoft Learn 上完成了“使用 .NET MAUI 构建移动和桌面应用程序”路径。现在我有一个简单的工作 MAUI 应用程序,我正在尝试使用CommunityToolkit.MVVM.
该课程有一个名为的点击事件,OnCall如下所示
private async void OnCall(object sender, EventArgs e)
{
var confirmCall = DisplayAlert(
"Dial a Number",
$"Would you like to call {translatedNumber}?",
"Yes",
"No"
);
if (await confirmCall)
{
try
{
PhoneDialer.Open(translatedNumber);
}
catch (ArgumentNullException)
{
await DisplayAlert("Unable to dial", "Phone number was not valid.", "OK");
}
catch (FeatureNotSupportedException)
{
await DisplayAlert("Unable to dial", "Phone dialing not supported.", "OK");
}
catch (Exception)
{
await DisplayAlert("Unable …Run Code Online (Sandbox Code Playgroud) 我刚刚安装了 VS 2022 预览版以使用 Maui,但似乎无法查看 XAML 的设计器视图,我想将控件拖放到页面上,但我得到的只是一个古老的 XAML 文本视图。
如何删除 MAUI 中的标题栏并将 Windows 版本应用程序中的窗口大小固定为 800x400 像素?
我在网上查了很长时间,但发现一年多前发布的MAUI后续版本已经没有实际信息了。为什么 MAUI 不支持窗口调整大小并禁用其缩放作为条件 WPF,它还使用 XAML 来创建窗口,我希望发布时有这样的可能性。
标题栏看起来很破损,因为它比关闭/折叠/最大化按钮高。
我正在将 Xamarin.Android 项目移植到 .Net 6。
由于依赖关系,不可能将 Xamarin.Essentials 包含在 .Net 6 项目中。
因此,我将所有内容切换为使用 Microsoft.* 命名空间。除了 Xamarin.Essentials.Platform.CurrentActivity 之外,这很容易。
.Net MAUI 是否有此类的等效项?如果没有,除了将 Essentials 中的代码复制/粘贴到应用程序之外,还有其他好的选择吗?
我发现的与此问题相关的大多数帖子都是在毛伊岛仍处于测试阶段时创建的。
\n此问题仅影响 Android 版本!iOS 版本第一次就成功了。
在学习完这个 Microsoft Maui 教程后,我立即遇到了构建问题。错误是APT2260: resource mipmap/appicon and mipmap/appicon_round not found。
在资源文件夹中没有appicon_round.svg文件,所以我复制appicon.svg并appicon_round.svg尝试重建并得到相同的错误。
我删除android:roundIcon="@mipmap/appicon_round"了AndroidManifest.xml,并删除了appicon_round.svg通过操作创建的文件copy,但构建仍然失败。
即使确实appicon.svg存在,我也android:icon="@mipmap/appicon"从中删除了AndroidManifest.xml删除了,并且重建成功了。\xe2\x80\x8d\xe2\x99\x82\xef\xb8\x8f
最后,我使用 Inkscape 创建appicon_round.svg,将其添加到项目Resources/AppIcon文件夹中,然后添加android:icon="@mipmap/appicon" android:roundIcon="@mipmap/appicon_round"回AndroidManifest.xml文件中。以下构建成功。
首先要注意的是,虽然 Visual Studio 2022 for MacOS 确实创建了该文件,但当我创建多平台项目时,appicon.svg它并没有生成。appicon_round.svg
对我来说,第二个“问题”是当我从 Android 清单文件中删除圆形 SVG 引用时,但构建仍然失败。
\nmaui ×10
c# ×4
android ×2
xaml ×2
.net ×1
.net-6.0 ×1
build ×1
build-error ×1
data-binding ×1
maui-blazor ×1
maui-windows ×1
mvvm ×1
winui-3 ×1
xamarin ×1