我最近开始使用.Net MAUI。但是,我现在遇到了一个问题,在互联网上找不到任何帮助。我希望当我单击按钮时调用定义的单击函数。但是,我无法将参数传递给“Clicked”属性。我怎么做?
我尝试在不同在线论坛中的各种帖子的帮助下解决我的问题,但这些帖子都没有帮助,所以我正在创建自己的问题。
到目前为止我的代码:
XAML:
<Grid RowSpacing="50" Margin="50">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Border Stroke="Transparent"
StrokeThickness="3"
StrokeShape="RoundRectangle 30,30,30,30"
HorizontalOptions="Center"
BackgroundColor="White"
Grid.Row="0"
Grid.Column="0">
<Border.GestureRecognizers>
<TapGestureRecognizer Tapped="onStudentSelected"/> <!-- Here i want to give a param -->
</Border.GestureRecognizers>
<VerticalStackLayout WidthRequest="300" HeightRequest="250">
<Border Stroke="#21B1FF"
StrokeThickness="3"
StrokeShape="RoundRectangle 15,15, 15, 15"
HorizontalOptions="Center"
BackgroundColor="White"
Margin="10">
<VerticalStackLayout WidthRequest="240">
<Label FontSize="25" VerticalTextAlignment="Center" HorizontalTextAlignment="Center" Text="Max Muster" Padding="10"/>
</VerticalStackLayout>
</Border>
<Border Stroke="#21B1FF"
StrokeThickness="3"
StrokeShape="RoundRectangle 15,15, 15, 15"
HorizontalOptions="Center"
BackgroundColor="White">
<VerticalStackLayout WidthRequest="240">
<Label …Run Code Online (Sandbox Code Playgroud) 再会。
在我的所有应用程序中,请求用户权限不会在 Android 中显示权限弹出窗口。
我正在使用 .NET MAUI CommunityToolkit 中的 FileSaver,据我了解,该SaveAsync方法应该请求许可并保存到磁盘。
async Task SaveDocument(MemoryStream memoryStream)
{
try
{
//var fileLocation = await FileSaver.Default.SaveAsync($"{Guid.NewGuid()}.docx", memoryStream, new CancellationToken());
var someLocation = await FileSaver.SaveAsync($"{Guid.NewGuid()}.docx", memoryStream, new CancellationToken());
await Toast.Make($"File is saved: {someLocation}").Show();
}
catch (Exception ex)
{
await Toast.Make($"File is not saved, {ex.Message}").Show();
}
}
Run Code Online (Sandbox Code Playgroud)
catch 语句遇到错误消息权限未授予。
这是我的AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application android:allowBackup="true" android:icon="@mipmap/appicon" android:roundIcon="@mipmap/appicon_round" android:supportsRtl="true">
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
</application>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" …Run Code Online (Sandbox Code Playgroud) 简而言之,我有一个内容视图,例如;
<ContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="myapp.customstacklayout">
<StackLayout>
<StackLayout>
<StackLayout x:Name="header">
<!-- some title things here, such as a header label etc-->
</StackLayout>
<StackLayout x:Name="content">
<!--Contents should be added here when reused-->
</StackLayout>
<StackLayout x:Name="footer">
<!-- some footer things here, such as a summary label etc-->
</StackLayout>
</StackLayout>
<!--Not here-->
</StackLayout>
</ContentView>
Run Code Online (Sandbox Code Playgroud)
我想在 ContentPage 中重用它,例如;
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:mycontrols="clr-namespace:myapp"
x:Class="myapp.mainpage">
<StackLayout>
<mycontrols:customstacklayout>
<Button Text="TestButton"/>
<Entry Text="TestEntry"/>
<Label Text="TestLabel"/>
.... and etc..
</mycontrols:customstacklayout>
</StackLayout>
</ContentPage>
Run Code Online (Sandbox Code Playgroud)
要创建这样一个可重用的项目,我认为,在 xaml 中,必须有一些内容让 contentview 指出应该将子项添加到哪个 IView 项目中
有什么想法或一段代码吗? …
我对毛伊岛有意见。我需要实现生物识别身份验证(Ios 设备上的面部 ID),但 Plugin.Fingerprint 包不起作用(它可能已经过时)。我正在使用.Net 版本 7.0.0。我尝试过将对象实例化为单例:
builder.Services.AddSingleton(typeof(IFingerprint), CrossFingerprint.Current);
Run Code Online (Sandbox Code Playgroud)
并注射它
private readonly IFingerprint fingerprint;
public loginView(loginViewModel _loginViewModel,
IFingerprint _fingerprint)
Run Code Online (Sandbox Code Playgroud)
创建对象时抛出错误:
This functionality is not implemented in the portable version of this assembly. You should reference the NuGet package from your main application project in order to reference the platform-specific implementation.
Run Code Online (Sandbox Code Playgroud)
有人能帮我吗?谢谢
有人可以帮我在 Visual studio 2022 社区获取 MAUI 模板吗?MAUI 已安装。
它工作正常,然后我安装了专业版本而不是社区版本,然后它就消失了。我已尝试重新安装并重新启动多次。即使安装了模块,MAUI 模板也不会显示。
有什么帮助可以出去吗?谢谢<3
编辑:我使用 Gerald 的 dotnet install 命令修复了它。但是,要做到这一点,我必须首先删除 C:\Program Files (x86)\dotnet 中的所有内容,然后我可以运行他的命令,现在它可以完美运行!
我使用 PFX 文件从 .NET MAUI Windows 应用程序和自签名证书中创建了带有 MSIX 的安装包。
\n当我尝试在另一台 Windows 10 计算机上安装它时,收到以下消息:“无法验证此应用程序包\xe2\x80\x99s 发布者证书。请联系您的系统管理员或应用程序开发人员以获取经过验证的新应用程序包证书。必须验证应用程序包中签名的根证书和所有直接证书(0x800B010A)”。部署目录中包含 MyApp.msix 和 MyApp.cer。在我的开发计算机上,使用 MSIX 文件安装没有问题。
\n如何使用这些文件安装到另一台未创建证书的计算机上?
\n我最近更新到了最新的 macos 和 xcode (14.3),它破坏了我在 ios 上的 .net 构建(第二次)。我已确保在“视觉首选项”>“SDK 位置”>“Apple”中设置 SDK 位置,并在终端中确认这一点xcode-select -p
我尝试过不同版本的xcode
我尝试使用 global.json 来定位不同版本的 .net,包括最新的(7.0.203)
我尝试过针对不同版本的 ios,但无法定位高于 16.4 的目标(SupportedOSPlatformVersion 16.4 不能高于 TargetPlatformVersion 16.1)
我尝试卸载并重新安装所有工作负载dotnet workload uninstall ios,然后dotnet workload install ios
我已经删除了 bin 和 obj 目录
最后,我尝试创建一个新的毛伊岛项目,它可以工作,所以我逐渐添加了不工作的项目使用的所有库,它仍然可以工作......为什么
我只是不断收到错误:
clang++ exited with code 1:
ld:framework not found System
clang: error: linker command failed with exit code 1
Run Code Online (Sandbox Code Playgroud) 我正在构建 .NET 6 MAUI Blazor 应用程序。该应用程序有一个顶部导航,可以让用户从当时所在的应用程序中的任何位置转到他们的个人资料。
\n像这样使用导航管理器:navManager.NavigateTo($"/Profile/{loggedInUser.Username}");在所有情况下都有效,除了一种情况,如果用户当前在其他人的个人资料上,则导航管理器不执行任何操作。
我相信这是因为当前页面和它试图访问的页面本质上是相同的页面Profile.razor,唯一的区别是 URL 的用户名部分/Profile/{username},应用程序通过该部分知道将用户数据加载到页面上。
我已经像这样解决过它
\nnavManager.NavigateTo("/");\nnavManager.NavigateTo($"/Profile/{loggedInUser.Username}");\nRun Code Online (Sandbox Code Playgroud)\n通过先导航到另一个页面然后返回到个人资料页面,导航成功。
\n目前这对我来说不会造成问题,因为页面Index.razor不显示数据库中的任何数据并立即加载,因此转换不明显。但将来索引页面将是加载最多数据的页面,这种解决问题的方法并不是一个好的方法,因为用户将首先看到索引页面加载。此外,不会有一个页面不需要加载任何数据,因此我无法像我在这里所做的那样将其设置为立即运行其他页面。
如果我像这样使用导航管理器的forceLoad选项navManager.NavigateTo($"/Profile/{loggedInUser.Username}", true);\n我只会收到一条错误消息:
\n\n嗯\xe2\x80\xa6 无法访问此页面。https://0.0.0.0/Profile/username上的网页可能存在问题,或者可能已永久移至新网址。
\n
在配置文件页面上的 OnInitializedAsync() 函数中,我根本无法使用断点捕获它进入页面。
\n顶部导航是一个 Razor 组件,它自己始终加载在MainLayout.razor
<div class="page @DarkTheme()">\n <TopNav/>\n <main>\n <article>\n @Body\n </article>\n </main>\n <BottomNav/>\n</div>\nRun Code Online (Sandbox Code Playgroud)\n它不是“个人资料”页面顶部的一个 div,我可以在其中编写不同的函数,因此它只是重新加载页面并通过将该 ID 设置为请求的 ID 来获取登录用户的数据。\n另外我不知道如何找出正文中加载的页面,TopNav.razor因此我可以尝试进行相同的 id 交换。
英语不是我的母语,这是我在这里发布的第一个问题,但我希望我足够好地描述了这个问题,以便人们能够理解。如果您需要更多信息或有任何疑问,我将很乐意为您解答。
\n这真让我抓狂。
我有一个 MAUI 项目,在编译时发送以下错误:
use-sdk:minSdkVersion 19 不能小于库中声明的版本 21
当我看到 AndroidManifest.xml 文件时,我看到:
<uses-sdk android:minSdkVersion="19" />
Run Code Online (Sandbox Code Playgroud)
我将“19”更改为“21”并重新编译。之后就成功了。
然后我更改一些代码并再次编译。Visual Studio 发送与以前相同的错误。我再次检查该参数中是否设置了“19”。
我怎样才能避免这种情况?