标签: .net-maui

Autofac maui,Autofac.Core.Activators.Reflection.NoConstructorsFoundException:'找不到类型'xxx.Resource+Xml'的可访问构造函数

所以我正在学习 xamarin 表单课程,但我正在对其进行调整以与 .net Maui 一起使用。到目前为止,它是一个基本的应用程序,仅构建了弹出外壳。

作者使用的是 autofac,我以前从未听说过或使用过。我按照示例进行操作并得到运行时异常:

Autofac.Core.Activators.Reflection.NoConstructorsFoundException:“找不到类型‘MauiApp4.Resource+Xml’的可访问构造函数。”

我不知道这意味着什么,也不知道如何继续:叹息

(我认为它试图说它无法访问某些东西?我也怀疑与 IContainer 有关?)

哦它

当我尝试在 Visual Studio 2022 社区版的 Android Pixel 5.0 API 30 Android 模拟器上构建和运行应用程序时,会发生这种情况。

它似乎在 Container = builder.Build(); 行崩溃

Autofac使用nuget加载,版本为6.3.0

我不知道我使用的是哪个版本的 .net 或 maui,但它是最新的(我如何获取此信息?)

这是当前(适用?)代码:(它也在我的 github 存储库上https://github.com/gfmoore/MauiApp4B.App/tree/master

应用程序.xaml.cs

using System.Reflection;
using Autofac;
using IContainer = Autofac.IContainer;

namespace MauiApp4;

public partial class App : Application
{
    public static IContainer Container;

    public App()
    {
      InitializeComponent();
      //class used for registration
      var builder = new ContainerBuilder();

      //scan and register all …
Run Code Online (Sandbox Code Playgroud)

.net autofac runtimeexception .net-maui

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

为什么 iOS 上的 MAUI 应用启动时间这么慢?

我面临的问题是 iOS 上的 MAUI 应用程序启动比 Android 或 Windows 上慢得多。

部署是使用 Visual Studio 版本 17.3.0 Preview 1.1 完成的,我尝试创建和部署一个新项目,而不进行任何添加。

iOS 上的启动(iPhone、iPad 已更新至最新操作系统版本) > 10 秒
Android < 2 秒
Windows < 2 秒

找不到与此相关的任何资源。

使用 Visual Studio 17.2 构建和部署的 PS Xamarin Forms 普通应用程序速度更快,在相同设备上不到 4 秒。

.net startup ios maui .net-maui

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

使用 CommunityToolkit.MVVM 将参数从 ViewModel 传递到 .NET MAUI 中的 ViewModel

我的接收 Viewmodel (QuestionsPageViewModel) 在通过 Shell 导航传递 TopidId 后未收到 TopidId,如下面的代码所示。我已将断点放置在 QuestionsPageViewModel 中的 LoadQuestions 方法处。调用时TopicId为null。我缺少什么?

主页视图模型

//This is in a command executed after clicking a button. And this is working fine
await Shell.Current.GoToAsync($"{nameof(QuestionsPage)}?TopicId={pack.TopicId}");
Run Code Online (Sandbox Code Playgroud)

问题页面视图模型

[INotifyPropertyChanged]
[QueryProperty(nameof(TopicId), nameof(TopicId))]
    public partial class QuestionsPageViewModel
    {
        public ObservableRangeCollection<Question> QuestionsList { get; set; } = new();
        [ObservableProperty]
        string? title;

        [ObservableProperty]
        public string topicId;

        public QuestionsPageViewModel()
        {
            LoadQuestions();
        }

        async void LoadQuestions()
        {
            Title = Utilities.ConvertTopicIdToString(short.Parse(TopicId));

            try
            {
                using (var context = new DataContext())
                {
                    QuestionPack questionPack = …
Run Code Online (Sandbox Code Playgroud)

maui .net-maui

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

GIF 图像在 .net MAUI 应用程序中不起作用

我想在我的应用程序中显示一些 gif 动画图像。我用来使用 Xamarin.Forms 执行此操作的库是 Xamarin.FFImageLoading.Svg.Forms。现在我们正在将应用程序迁移到 .net MAUI,我看到 MAUI 文档说它支持 GIF 文件。我尝试了一个示例,但没有成功。

我在以下链接中看到了与 gif 相关的错误和解决方法,并且我也尝试了它,但对我来说 gif 动画仍然无法正常工作。

https://github.com/dotnet/maui/issues/5034

我的代码位于公共存储库 github 上。

https://github.com/rynjas/GifMauiSample

如果您能帮助我解决这个问题,我将不胜感激。

重现该问题的步骤如下:

  1. 创建示例 .NET MAUI 项目
  2. 将 gif 图像添加到 Resources/images 目录 (giphy.gif)
  3. 将 gif 图像属性的 Build 操作设置为 MauiImage
  4. 在MainPage.xml中添加一个图像组件,如下所示运行应用程序,只出现GIF的第一帧,没有动画发生。
    <Image Source="giphy.gif" HeightRequest="200" HorizontalOptions="Center" />
Run Code Online (Sandbox Code Playgroud)
  1. 我按照下面的票证中的解决方法进行操作,因此我将这些步骤添加到 GIFMAUISample/GIFMAUISample.csproj https://github.com/dotnet/maui/issues/5034
<MauiImage Include="Resources\Images\*" />
<MauiImage Update="Resources\Images\*.gif" Resize="False" />
Run Code Online (Sandbox Code Playgroud)

问题仍然没有解决。

maui .net-maui

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

如果方法名称以小写字符开头,.Net Maui [RelayCommand] 无法编译?

.Net MAUI 新手,正在将 CommunityToolkit.Mvvm 版本 8.0.0 与 Microsoft Visual Studio Community 2022(64 位)一起使用 - 当前版本 17.3.3

在我的 XAML 中,我有一个按钮:

<Button 
   Text="Add"
   Command="{Binding data_addCommand}"
   />
Run Code Online (Sandbox Code Playgroud)

在我的 ViewModel 中,我有以下方法:

[RelayCommand]
private void data_add()
{

}
Run Code Online (Sandbox Code Playgroud)

当我构建时,编译器失败并显示以下内容:

Error   CS0102  The type '[my_viewmodel_name]' already contains a definition for 'data_addCommand'
Run Code Online (Sandbox Code Playgroud)

然而,出于无奈,我将 XML 更改为:

<Button 
   Text="Add"
   Command="{Binding Data_addCommand}"
   />
Run Code Online (Sandbox Code Playgroud)

...在我的 ViewModel 中:

[RelayCommand]
private void Data_add()
{

}
Run Code Online (Sandbox Code Playgroud)

唯一的区别是 Binding 命令中的方法名称和 ViewModel 中的方法名称以大写“D”开头,而不是小写“d”。

当我构建时,它成功完成!- ?? -- 我是否错过了文档中规定 [RelayCommand] 的方法名称必须以大写字母开头的内容?

我记得当使用 [ObservableProperty] 属性时,生成的属性将自动使用 UpperCamelCase 格式作为其名称。但是,我不记得看到过任何有关 [RelayCommand] 的内容。我假设情况就是这样(请原谅双关语),并且 …

.net-maui maui-community-toolkit

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

如何以编程方式移动和最小化 Maui Windows 应用程序

我有一个带有 blazor 的毛伊岛应用程序,我正在创建一个自定义标题栏。

我即将关闭 maui 应用程序,在 blazor 上使用Application.Current.Quit();

现在我怎样才能最小化和移动毛伊岛应用程序

我的代码 Blazor

private void MoveWindow()
{
    
}

private void MinimizeWindow()
{
        
}


private void CloseWindow() {
    Application.Current.Quit();
}
Run Code Online (Sandbox Code Playgroud)

c# winui-3 maui .net-maui

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

如何用手指在画布上绘画?

我正在尝试通过 .NET Maui 制作一些绘图的东西。我已阅读文档,现在我可以通过命令绘制形状。但我不知道如何使用触摸事件(用手指绘图)来做到这一点。你知道我该怎么做吗?您知道这方面的任何指南或文档吗?我应该读什么?

.net c# maui .net-maui

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

Maui 可以配置直线阴影吗?

我\xc2\xb4m 在 .net maui 中开发一个应用程序,我有一个问题,但我没有通过浏览回答自己。\n我正在尝试将阴影应用到边框,并且以下代码完美运行。

\n
   <Border \n    Style="{StaticResource light-theme-border}"\n    Grid.Column="1"\n    Grid.Row="3"\n    Grid.ColumnSpan="7">\n    <Border.Shadow>\n        <Shadow \n                Brush="red"\n                Offset="1,11"\n                Radius="20"\n                Opacity="0.25"/>\n    </Border.Shadow>\n   </Border>\n
Run Code Online (Sandbox Code Playgroud)\n

但是当我直接在边框属性内写入阴影时,它会捕获该属性,但我不知道如何转储[画笔、偏移、半径和不透明度]信息:

\n
    <Border \n        Style="{StaticResource light-theme-border}"\n        Grid.Column="1"\n        Grid.Row="3"\n        Grid.ColumnSpan="7"\n        Shadow="???????????????????????????">\n    </Border>\n
Run Code Online (Sandbox Code Playgroud)\n

xaml shadow maui .net-maui

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

如何让默认的 shell 弹出图标在 android 深色主题打开/关闭时做出反应

我有一个使用 shell 弹出窗口的应用程序。当我添加弹出按钮时,它会自动创建一个图标,如下图所示:

深色模式下的默认弹出图标

但是,当我关闭 Android 深色主题时:

关闭深色主题

弹出图标仍然是白色的,因此很难看到:

在此输入图像描述

我正在使用 AppThemeBinding 根据用户选择的系统主题自动相应地设置应用程序主题,但如果用户从 Android 设置中关闭深色主题,我不知道如何将弹出图标更改为更深的颜色。

知道该怎么做吗?

AppShell.xaml 当前如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
    
<Shell
    x:Class="MAUIApp1.AppShell"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:local="clr-namespace:MAUIApp1"
    FlyoutBackgroundColor="{AppThemeBinding Light=#f2f2f2, Dark=#2a2a2a}">

    <Shell.Resources>
        <ResourceDictionary>
            ...
        </ResourceDictionary>
    </Shell.Resources>

    <Shell.FlyoutHeader>
        ...
    </Shell.FlyoutHeader>

    <Shell.ItemTemplate>
        <DataTemplate>
            ...
        </DataTemplate>
    </Shell.ItemTemplate>

    <FlyoutItem Title="Item1" Icon="item1.svg">
        <ShellContent ContentTemplate="{DataTemplate local:page1}" Route="page1"/>
    </FlyoutItem>

    <FlyoutItem Title="Item2" Icon="item2.svg">
        <ShellContent ContentTemplate="{DataTemplate local:page2}" Route="page2"/>
    </FlyoutItem>
    
    <FlyoutItem Title="Item3" Icon="item3.svg">
        <ShellContent ContentTemplate="{DataTemplate local:page3}" Route="page3"/>
    </FlyoutItem>

    <Shell.FlyoutFooter>
        ...
    </Shell.FlyoutFooter>
</Shell>
Run Code Online (Sandbox Code Playgroud)

xaml maui .net-maui

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

XAML、绑定、源和路径

我正在学习了解 .NET MAUI 的 XAML 中的绑定机制如何工作。我假设这对于所有 XAML 项目、WPF、MAUI 等都是相同的。

\n

最后是整个 XAML。

\n

这个 XAML 工作正常:

\n
<Button WidthRequest="150" Text="Add Activity" \n                Command="{Binding AddActivityEntityCommand}"\n                IsEnabled="{Binding IsNotBusy}"\n                Grid.Row="2"\n                Margin="8"/>\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  • 这是因为 Button 是 ContentPage 的一部分,它被x:DataType设置为MainPageViewModel,这是命令所在的位置吗?

    \n
  • \n
  • Binding 设置为AddActivityEntityCommand,而实际方法签名为\n
    async Task AddActivityEntityAsync()。这是如何解决的?因为它显然与名称不匹配,但它有效。其工作/被认可的方法签名要求是什么?

    \n
  • \n
\n

另一方面,这并不像开箱即用那么简单:

\n
<Label HorizontalOptions="End" TextColor="Red" Padding="0,0,10,0" Text="" \n       IsVisible="{Binding IsSynchronized}">\n            <Label.GestureRecognizers>\n                 <TapGestureRecognizer \n                       Command="{Binding Source={x:Type viewmodel:MainPageViewModel},\n                                            Path=DeleteActivityCommand}" />\n            </Label.GestureRecognizers>\n </Label>\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  • 在这种情况下,添加Command="{Binding DeleteActivityCommand}不起作用,因为<DataTemplate x:DataType="model:ActivityEntity"> …

xaml binding mvvm maui .net-maui

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