标签: .net-maui

.NET MAUI 错误没有为此对象定义无参数构造函数

将我的视图绑定到视图模型时发生。

错误描述:

System.MissingMethodException: 'No parameterless constructor defined for type 'yournamespace.view.pagename'.'
Run Code Online (Sandbox Code Playgroud)

c# maui .net-maui maui-community-toolkit maui-windows

11
推荐指数
1
解决办法
6315
查看次数

如何将普通 Xamarin.iOS 解决方案(无 Xamarin Forms)更新为 .net 6(无 MAUI)以在 iOS 和 Mac Catalyst 上运行?

我有一个 Xamarin.iOS 解决方案,其中包括一个库项目和一个可执行文件。该解决方案不使用 Xamarin Forms,即它是所谓的“Xamarin Native”解决方案。

我想将其升级到 .net 6 解决方案。不幸的是,我看到的所有示例和文档都只解释了如何将 Xamarin Forms 解决方案升级到使用 MAUI 的 .net 6 解决方案(这是 Xamarin Forms 的演变)。

所以:

  1. 如何将我的解决方案更新为 .net 6“本机”iOS 解决方案?
  2. 由于 .net 6 还支持 Mac Catalyst,因此如何将我的解决方案配置为除了 iOS 之外还可以在 Mac Catalyst 上运行?

.net xamarin xamarin.forms .net-6.0 .net-maui

10
推荐指数
1
解决办法
974
查看次数

在 .NET MAUI (Windows) 中捕获 KeyDown 或 KeyPress

我正在开发适用于 Android 和 Windows 的条形码读取器应用程序。在 Android 上,我会收到每个扫描的条形码的系统广播,但在 Windows 上,典型的配置是从条形码扫描仪发送的键盘输入。所以我想做的是捕获 KeyDown/KeyPress 事件,以便我可以将收到的所有字符添加到临时字符串中,然后在收到“Enter”后立即将其作为“条形码读取事件”提交到我的应用程序。

但是,我无法在任何控件中找到 KeyDown/KeyPressed 事件。这可能吗?如果是这样,我该看哪里?我认为最接近的(我认为)是如何使用应用程序生命周期事件的描述:https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/app-lifecycle

谢谢并致以最诚挚的问候,

约尔格.

maui .net-maui

10
推荐指数
1
解决办法
7614
查看次数

如何在 MAUI 项目中包含每个平台的现有 C++ 库?

我们有一个针对每个平台构建的 C++ 库,即适用于 Windows 的 .dll、适用于 Android 的 .so 以及适用于 iOS 的 .a。尝试以下方法将 .so 文件包含在 Android 版 MAUI 应用程序中。(其他平台待定)-

  • Platforms -> Android -> lib -> arm64-v8a文件夹
  • 设置 .so 文件属性:Build Action = AndroidNativeLibrary
  • 用过的JavaSystem.LoadLibrary(lib name);
  • 为导入的库实现了常用的 PInvoke 类

但是,代码失败了

UnsatisfiedLinkError异常:dlopen失败:在Java.Interop.JniEnvironment.StaticMethods.CallStaticVoidMethod(JniObjectReference类型,JniMethodInfo方法,JniArgumentValue * args)中找不到库“lib name.so”在Java.Interop.JniEnvironment.StaticMethods.CallStaticVoidMethod(JniObjectReference类型) 、JniMethodInfo 方法、JniArgumentValue* args) 在 /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/Java.Interop/JniEnvironment.g.cs:line 13250 at Java /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/Java.Interop/JniPeerMembers 中的.Interop.JniPeerMembers.JniStaticMethods.InvokeVoidMethod(字符串编码成员,JniArgumentValue* 参数)。 JniStaticMethods.cs:第 41 行位于 /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/net6.0/android- 中的 Java.Lang.JavaSystem.LoadLibrary(String libname) 31/mcw/Java.Lang.JavaSystem.cs:第339行

在 VS 输出窗口中,可以看到以下消息 -

“共享库‘库名称’未加载,p/invoke‘方法名称’可能会失败”

尝试移动 lib 目录,但没有成功。

我们在这里缺少什么?

还有使用现有 C++ 库的 MAUI 示例吗?支持真的足以满足生产使用吗?

--- 更新 …

c++ android maui .net-maui

8
推荐指数
1
解决办法
2310
查看次数

.net maui 发布 Android 应用程序由于链接期间出现问题而失败

我有一个使用 .net 7 预览版 2 的 .net maui 应用程序,我想为 Android 发布该应用程序。

我的发布命令:dotnet publish ${{env.UI_PROJECT_PATH}} -f net7.0-android -c Release

这给了我这个错误:

C:\Program Files\dotnet\sdk\7.0.100-rc.2.22477.23\Sdks\Microsoft.NET.ILLink.Tasks\build\Microsoft.NET.ILLink.targets(86,5): error NETSDK1144: Optimizing assemblies for size failed. Optimization can be disabled by setting the PublishTrimmed property to false. [D:\a\MoneyFox\MoneyFox\src\MoneyFox.Ui\MoneyFox.Ui.csproj::TargetFramework=net7.0-android]
ILLink : error IL1011: Failed to write 'obj\Release\net7.0-android\android-x64\linked\SkiaSharp.Views.Android.dll'. [D:\a\MoneyFox\MoneyFox\src\MoneyFox.Ui\MoneyFox.Ui.csproj::TargetFramework=net7.0-android]
  Fatal error in IL Linker
  Unhandled exception. Mono.Linker.LinkerFatalErrorException: ILLink: error IL1011: Failed to write 'obj\Release\net7.0-android\android-x64\linked\SkiaSharp.Views.Android.dll'.
   ---> System.ArgumentException: Member 'System.Int32 SKCanvasView_ignorePixelScaling' is declared in another module and needs to be imported …
Run Code Online (Sandbox Code Playgroud)

.net-maui .net-7.0

8
推荐指数
1
解决办法
3738
查看次数

.NET Maui:矢量/SVG 启动画面未正确调整大小

测试为毛伊岛应用程序添加自定义启动屏幕,我读了一些Microsoft 文档,上面写着

在构建时,启动屏幕图像的大小会调整为适合目标平台和设备的正确大小。然后,调整大小的启动屏幕将添加到您的应用程序包中。

然而,这不是我所看到的;相反,图像被屏幕覆盖并且未被调整。重现:

  1. 安装 VS Studio 2022 17.1.0 Preview 3.0 和最新的 MAUI
  2. 创建新的 .NET Maui App(预览)项目
  3. 添加一个 SVG 文件,我使用了这个: https: //publicdomainvectors.org/download.php?file =liftarn_Black_horse.svg 并将其放入Resources/Images
  4. 在VS中将文件重命名为“horse.svg”(否则你会得到一个构建错误)
  5. 在Properties中,将Build Action设置为MauiSplashScreen;这将在 csproj 文件中创建一个新条目
  6. 我在 csproj 文件中有两个 <MauiSplashScreen ...> 标签,因此我手动删除了前一个标签(注意:存在一个错误,因为 svg 的“属性”面板不再显示MauiSplashScreen
  7. 在模拟器上运行应用程序,我使用 Pixel 2 Android Pie 9

当splash出现的时候,它没有适应屏幕尺寸,所以被封顶了。看起来像这样(我添加了红色背景):

在此输入图像描述

但整个 SVG 图像看起来像:

在此输入图像描述

所以我想知道上面这句话是什么意思?在我看来,我必须以某种方式手动缩小 SVG/图像以适应屏幕?

更新

我用视口替换 svg 中的高度和宽度,但结果是相同的:

在此输入图像描述

<svg 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns="http://www.w3.org/2000/svg" 
    xmlns:cc="http://web.resource.org/cc/" 
    xmlns:dc="http://purl.org/dc/elements/1.1/" 
    xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" 
    xmlns:svg="http://www.w3.org/2000/svg" 
    id="svg1322" sodipodi:version="0.32"
    viewBox="0 0 680 640" 
    ....

---

Run Code Online (Sandbox Code Playgroud)

.net c# svg maui .net-maui

7
推荐指数
1
解决办法
4986
查看次数

.NET MAUI 中的 Shell 导航到带有底部选项卡的页面

在登录流程中,登录页面通常没有构成应用程序主要流程的底部选项卡。

AppShell.xaml

 <TabBar>
        <ShellContent Title="Home"
             Icon="home.png" 
                      ContentTemplate="{DataTemplate local:HomePage}"/>
        <ShellContent Title="Articles"
                          Icon="articles.png"
                          ContentTemplate="{DataTemplate local:ArticlesPage}" />
    </TabBar>
Run Code Online (Sandbox Code Playgroud)

因此,如果登录成功,我尝试从登录页面导航到作为 Shell 中 TabBar 的一部分的主页。问题是 Shell 然后导航到主页,就好像它是一个独立的页面,没有 TabBar。我假设答案在于导航到 TabBar 部分本身,我不知道。

maui .net-maui

7
推荐指数
1
解决办法
7927
查看次数

调整大小程序 检测到一个或多个无效文件名

我无法消除 Visual Studio for Mac 2022 v17 中 .net maui 应用程序中的此生成错误?构建输出显示:

/usr/local/share/dotnet/packs/Microsoft.Maui.Resizetizer.Sdk/6.0.300-rc.3.5667/targets/Microsoft.Maui.Resizetizer.targets(511,9): error :             One or more invalid file names were detected.  File names must be lowercase, start and end with a letter character, and contain only alphanumeric characters or underscores: 
Run Code Online (Sandbox Code Playgroud)

当我将图像文件复制到资源/图像文件夹中时,它们确实包含无效字符,但我将文件重命名为仅包含有效的小写字母数字字母,但 Visual Studio 仍然损坏。我已经清理了项目,手动删除了 bin 和 obj 文件夹,重新启动了解决方案和 Visual Studio,甚至启动了整个机器,但没有成功。我什至尝试删除所有图像,但没有成功。

必须有一些其他缓存仍然保存着错误消息的无效引用,该错误消息根本就是错误的,并且由于其他一些相关原因而被抛出。任何帮助发现这个问题的帮助将不胜感激。

编辑 我现在创建了一个新项目(MyMauiSolution),并一一复制旧解决方案中的文件夹,以查看它会在哪里损坏。将所有文件复制到新项目后,它仍然有效。所以现在我有 2 个解决方案,它们或多或少具有完全相同的文件/图像,其中一个可以工作,另一个则不能?!

我什至尝试过比较文件夹结构,但没有区别?!

myiMac:Projects user_x$ diff -rq BlueWhaleMaui MyMauiSolution
Files BlueWhaleMaui/.DS_Store and MyMauiSolution/.DS_Store differ
Only in BlueWhaleMaui: .git
Only in BlueWhaleMaui: .gitignore
Only in BlueWhaleMaui: BlueWhaleMaui …
Run Code Online (Sandbox Code Playgroud)

visual-studio-mac .net-maui

7
推荐指数
2
解决办法
4305
查看次数

在 .NET MAUI 应用程序中创建和使用 HttpClient

我们是否在 .NET MAUI 应用程序中创建/使用 an HttpClient,就像在 Web 或 API 应用程序中一样?具体来说,我将我的HttpClient' 添加到我的应用程序中Program.cs使用IHttpFactory-- 见下文:

builder.Services.AddHttpClient("NamedClient1", config =>
{
    var url = currentState == "production"
        ? "https://my-production-url"
        : "https://sandbox-url";
    config.BaseAddress = new Uri(url);
});
Run Code Online (Sandbox Code Playgroud)

我理解 .NET MAUI 的想法是标准化我们处理事物的方式。当我尝试在 .NET MAUI 应用程序中添加该行时builder.Services,IntelliSense 并不建议AddHttpClient

xamarin xamarin.forms maui .net-maui

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

.Net MAUI 如何在标签中包含链接

使用 Visual Studio 社区版 2022。

.Net MAUI 新手,我正在尝试遵循https://learn.microsoft.com/en-us/dotnet/maui/user-interface/controls/label上的文档中提供的示例

下面的 XAML 代码(来自文档)用于使用点击识别器创建“链接”:

     <Label>
        <Label.FormattedText>
           <FormattedString>
              <Span 
                 Text="Link: " 
              />
              <Span 
                 Text="click here to open the docs"
                 TextColor="Blue"
                 TextDecorations="Underline">
                 <Span.GestureRecognizers>
                    <TapGestureRecognizer
                       Command="{Binding OpenUrlCommand}"
                       CommandParameter="https://learn.microsoft.com/dotnet/maui/" 
                    />
                 </Span.GestureRecognizers>
              </Span>
           </FormattedString>
        </Label.FormattedText>
     </Label>
Run Code Online (Sandbox Code Playgroud)

但是,该命令 (OpenUrlCommand) 从未被调用 - 使用 Windows 和 Andriod 模拟器进行测试。

在我的 ViewModel 中,我定义 OpenUrlCommand 如下:

public ICommand OpenUrlCommand => new Command<string>( async ( url ) => await Launcher.OpenAsync( url ) );
Run Code Online (Sandbox Code Playgroud)

...但是没有任何效果,我也尝试了以下方法 - 不行...

public ICommand OpenUrlCommand => new Command<string>( async ( …
Run Code Online (Sandbox Code Playgroud)

c# .net-maui maui-community-toolkit

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