将我的视图绑定到视图模型时发生。
错误描述:
System.MissingMethodException: 'No parameterless constructor defined for type 'yournamespace.view.pagename'.'
Run Code Online (Sandbox Code Playgroud) 我有一个 Xamarin.iOS 解决方案,其中包括一个库项目和一个可执行文件。该解决方案不使用 Xamarin Forms,即它是所谓的“Xamarin Native”解决方案。
我想将其升级到 .net 6 解决方案。不幸的是,我看到的所有示例和文档都只解释了如何将 Xamarin Forms 解决方案升级到使用 MAUI 的 .net 6 解决方案(这是 Xamarin Forms 的演变)。
所以:
我正在开发适用于 Android 和 Windows 的条形码读取器应用程序。在 Android 上,我会收到每个扫描的条形码的系统广播,但在 Windows 上,典型的配置是从条形码扫描仪发送的键盘输入。所以我想做的是捕获 KeyDown/KeyPress 事件,以便我可以将收到的所有字符添加到临时字符串中,然后在收到“Enter”后立即将其作为“条形码读取事件”提交到我的应用程序。
但是,我无法在任何控件中找到 KeyDown/KeyPressed 事件。这可能吗?如果是这样,我该看哪里?我认为最接近的(我认为)是如何使用应用程序生命周期事件的描述:https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/app-lifecycle
谢谢并致以最诚挚的问候,
约尔格.
我们有一个针对每个平台构建的 C++ 库,即适用于 Windows 的 .dll、适用于 Android 的 .so 以及适用于 iOS 的 .a。尝试以下方法将 .so 文件包含在 Android 版 MAUI 应用程序中。(其他平台待定)-
Platforms -> Android -> lib -> arm64-v8a文件夹Build Action = AndroidNativeLibraryJavaSystem.LoadLibrary(lib name);但是,代码失败了
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 示例吗?支持真的足以满足生产使用吗?
--- 更新 …
我有一个使用 .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) 测试为毛伊岛应用程序添加自定义启动屏幕,我读了一些Microsoft 文档,上面写着
在构建时,启动屏幕图像的大小会调整为适合目标平台和设备的正确大小。然后,调整大小的启动屏幕将添加到您的应用程序包中。
然而,这不是我所看到的;相反,图像被屏幕覆盖并且未被调整。重现:
Resources/ImagesMauiSplashScreen当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) 在登录流程中,登录页面通常没有构成应用程序主要流程的底部选项卡。
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 部分本身,我不知道。
我无法消除 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) 我们是否在 .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。
使用 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)