标签: maui

使用.NET 6或更高版本时需要Java SDK 11.0或更高版本

我已经安装了 .NET 6(版本6.0.100-rc.1.21458.32)和 Visual Studio 2020 Preview(尽管它可能不是先决条件)。

我正在尝试调试 hello-world 应用程序,但收到有关 Java 的构建错误

C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\31.0.100-rc.1.12\targets\Microsoft.Android.Sdk.Tooling.targets(20,5): error XA0031: 
Java SDK 11.0 or above is required when using .NET 6 or higher. 
Run Code Online (Sandbox Code Playgroud)

我已经安装了 Java 17 设置Path,并指向 Visual Studio 设置中的 Java 开发工具包位置(工具->选项->Xamarin->Android 设置)。因为这不起作用,我已将 JDK 位置设置为 Microsoft 的 openjdk,但它仍然不起作用。

在此输入图像描述

这是怎么回事?

.net java installation java-11 maui

19
推荐指数
5
解决办法
3万
查看次数

.NET MAUI 边框和框架之间的区别

.NET MAUI 中的边框和框架之间的功能区别是什么?

根据文档,边界的摘要是

.NET 多平台应用程序 UI (.NET MAUI) 边框是一个容器控件,可在另一个控件周围绘制边框、背景或两者。一个边框只能包含一个子对象。如果要在多个对象周围放置边框,请将它们包装在容器对象(例如布局)中。

而一个Frame的总结如下

.NET 多平台应用程序 UI (.NET MAUI) Frame 类用于使用可配置颜色、阴影和其他选项的边框来包装视图或布局。框架可用于创建控件周围的边框,但也可用于创建更复杂的 UI。

听起来他们都对我做了同样的事情:在另一个视图周围绘制边框(无论是布局还是单个控件并不重要)。那么为什么会有两种不同的观点呢?我如何决定使用哪一个?

maui

19
推荐指数
1
解决办法
1万
查看次数

将服务注入到 .NET MAUI 应用程序中的视图模型中

我试图了解如何在 .NET MAUI 应用程序中实现依赖注入。

我有一个服务类及其接口,用于处理我的 REST 调用,如下所示:

public class MyRestApiService : IMyRestApiService
{
   public async Task<string> Get()
   {
      // Do someting
   }
}
Run Code Online (Sandbox Code Playgroud)

然后我将其放入我的 DI 容器中MauiProgram.cs

builder.Service.AddTransient<IMyRestApiService, MyRestApiService>();
Run Code Online (Sandbox Code Playgroud)

我还有一个将用于我的MainPage.xaml. 问题是,如果我对服务进行构造函数注入,XAML 似乎不喜欢它。

看起来MainPageViewModel像这样:

public class MainPageViewModel : BaseViewModel
{
   IMyRestApiService _apiService;
   public MainPageViewModel(IMyRestApiService apiService)
   {
      _apiService = apiService;
   }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试定义如下MainPageViewModel视图模型时MainPage.xaml,出现错误:

<ContentPage.BindingContext>
   <vm:MainPageViewModel />
</ContentPage.BindingContext>
Run Code Online (Sandbox Code Playgroud)

错误如下:

MainPageViewModel 类型不能用作对象元素,因为它不是公共的,或者没有定义公共无参数构造函数或类型转换器。

如何将我的服务注入到我的视图模型中?

xamarin xamarin.forms maui .net-maui

18
推荐指数
1
解决办法
1万
查看次数

Device.StartTimer 在 MAUI 中已弃用,替代方案是什么?

我正在尝试将 Xamarin.Forms 应用程序移植到 .NET MAUI,但遇到了 Device.StartTimer 的弃用,虽然这显然目前在 MAUI 中仍然有效,我有兴趣了解替代方案是什么?

目前我有一个包装类如下:

public void Start()
{
   if (IsRunning)
   {
      return;
   }
   var wrapper = new TaskWrapper(Task, IsRecurring, true);
   Tasks.Add(wrapper);
   Device.StartTimer(Interval, wrapper.RunTask);
}
Run Code Online (Sandbox Code Playgroud)

我尝试用System.Timers.Timer替换它,但这导致了由于位于错误的线程上而无法修改 UI 元素的问题?计时器包装器本身在多个地方使用,因此在这种情况下我也不能使用绑定。

实际上是否有 Device.StartTimer 的直接替代品?非常感谢任何帮助。

maui

18
推荐指数
3
解决办法
1万
查看次数

.Net MAUI 用户设置的保存位置

在 Windows 窗体和 WPF 应用程序中,我们可以使用设置设计器文件来保存用户特定的设置。该文档仅提到 .Net Framework(例如 1 - 4),而不是 .Net Core 或 .Net(例如 5+)。我已经确认 .settings 格式和设计器仍然可以在使用 Visual Studio 2022 的 Windows 上的 .Net 6 WPF 中工作。

我的问题是,文件格式和设计器仍然是.Net MAUI.settings应用程序的推荐方法吗?它可以在所有平台(Windows、macOS、移动设备)上运行吗?如果没有,建议的方法是简单地编写自己的自定义文件来保存用户设置,如果是,该文件应该写入哪里?/ , 或者别的地方?Environment.SpecialFolder.ApplicationDataEnvironment.SpecialFolder.LocalApplicationData

.net settings maui

17
推荐指数
2
解决办法
1万
查看次数

您可以使用 .NET MAUI 和 blazor 开发一个面向 Web、ios、android 和 windows 的网页吗?

我最近阅读了 .NET MAUI,但我对其与 Blazor 的用途感到困惑。

您可以使用 .NET MAUI 和 blazor 开发一个面向 Web、ios、android 和 windows 的网页吗?

例如,有效地开发网页以在任何其他设备上也作为应用程序工作,但在浏览器中以正常的 Blazor 方式工作(即使用 WASM)?

.net blazor asp.net-blazor maui

16
推荐指数
1
解决办法
9601
查看次数

登录 .net MAUI

.net MAUI 最近在其最新版本之一中删除了日志记录。现在有什么替代方案以及应该如何实施?已经在网上查遍了,但找不到任何实现的日志架构的示例。尝试过log4netNLog但最终没有成功设置其中任何一个。在线有 0 个用于在 MAUI 上设置任何日志记录的示例。

另外,在 MauiProgram 中看到了builder.Services.AddLogging()builder.Logging.Services,它应该与依赖注入一起使用,但也找不到该实现的任何 Maui 示例。

现在应该如何在 MAUI 中设置基本日志记录?

logging log4net nlog maui

16
推荐指数
1
解决办法
1万
查看次数

.NET MAUI 中是否有用于保存文件的对话框?

.NET MAUI 提供了一个 FilePicker 来显示本机对话框,您可以在其中从设备中选取文件。

有没有办法显示保存文件的对话框?(您可以在其中选择路径并输入文件名,...)。

我在 .NET MAUI 文档中没有找到任何内容,并阅读了StackOverflow 问题来实现FolderPicker,但这并不完全是我所需要的。

.net c# maui .net-6.0 .net-maui

16
推荐指数
1
解决办法
4682
查看次数

如何为 MAUI 应用程序创建全局错误处理

有没有办法为 MAUI 应用程序设置全局错误处理程序?当我从 Visual Studio 启动我的应用程序时,它当前运行良好。但是,在所有模拟器上,如果我尝试从 shell 的应用程序图标启动应用程序,它会启动然后退出(在 iOS 上,我会收到故障转储)。我不知道这发生在哪里,所以想尝试捕获全局处理程序。

我查看了 builder.ConfigureMauiHandlers,但它似乎只适用于控件。您不能使用 UnhandledExceptionEventHandler 类型,这是我认为合适的类型。

我还尝试了 AppDomain 处理程序,但它似乎也不起作用:

AppDomain ad = AppDomain.CurrentDomain;
ad.UnhandledException += Ad_UnhandledException;
Run Code Online (Sandbox Code Playgroud)

这可能吗?我只找到了 WCF 的示例,但它们不起作用。

maui

16
推荐指数
2
解决办法
6328
查看次数

需要一种方法在 MAUI 的编辑器/输入字段中隐藏软键盘

我发现此链接中似乎有用的内容:

Xamarin Forms 中的键盘禁用了 Entry 控件

但它似乎只适用于 Xamarin Forms。我什至在我的 MAUI 应用程序中使用了它,但它根本没有效果!

我希望这样做的原因是因为我想启用编辑器字段的焦点,但不触发软键盘(对于条形码扫描仪字段)

谢谢。

maui .net-maui

16
推荐指数
3
解决办法
1万
查看次数