标签: maui

MAUI 在查看模型列表中未找到属性

我有一个简单的视图模型,其中一个属性包含模型,另一个属性包含模型列表。

我可以毫无问题地绑定“Test”模型的属性,但无法让 XAML 识别“ListModel”包含具有其自己的属性的列表。我已经查看了几个示例,了解如何设置视图模型并在将列表绑定到视图之前正确初始化列表,虽然 XAML 理解“ListModel”是一个属性,但我无法让它识别出它是一个属性。列表,因此它不会编译,这样我至少可以看看它是否不是智能感知可能因某种原因而失败。

这是有问题的视图模型,其列表名为“ListModel”

public class TestViewModel
{        
    public TestModel Test { get; } = new TestModel();
    public List<TestListModel> ListModel { get; set; }


    public TestViewModel()
    {
        Initialize();
    }

    public void Initialize()
    {
        ListModel = new List<TestListModel>();
        ListModel.Add(new TestListModel
        {
            ListProp1 = "First",
            ListProp2 = "Second",
            ListProp3 = "Third"
        });
    }     
}
Run Code Online (Sandbox Code Playgroud)

这是正在放入列表中的模型。视图似乎没有看到这些属性。

public class TestListModel
    {        
        public string ListProp1 { get; set; }
        public string ListProp2 { get; set; }
        public string ListProp3 { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# xaml maui

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

.NET MAUI 中的 Android 深度链接(意图)支持

我目前正在尝试向使用 .NET MAUI 编写的 Android 应用程序添加深度链接支持(通过 Intents)。

我在 AndroidManifest.xml 的application元素下添加了一个活动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">
      <activity android:name="TestApp.MainActivity" android:exported="true">
        <intent-filter>
          <action android:name="android.intent.action.VIEW" />
          <category android:name="android.intent.category.DEFAULT" />
          <category android:name="android.intent.category.BROWSABLE" />
          <data android:scheme="https"
                android:host="test"
                android:pathPrefix="/group" />
        </intent-filter>
      </activity>
    </application>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
</manifest>
Run Code Online (Sandbox Code Playgroud)

我还在Platforms\Android 下的 MainActivity.cs 中添加了一个IntentFilter (见下文):

[IntentFilter(new[] { Intent.ActionView },
    Categories = new[]
    {
        Intent.ActionView,
        Intent.CategoryDefault,
        Intent.CategoryBrowsable
    },
    DataScheme = "https", DataHost = "test", DataPathPrefix = "/group" …
Run Code Online (Sandbox Code Playgroud)

.net android maui

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

.Net Maui/XAML QueryParameter 在视图模型构造函数中为 NULL,但在 XAML 中可用,如何在视图模型中访问它?

.Net 毛伊岛

我将一个对象传递给页面/视图模型,但它在构造函数中为空。我需要从中派生一些数据以传回 XAML 页面,但我不知道它何时或如何在视图模型中设置。

我相信这里使用的 [QueryProperty] 使用 MVVM Community Toolkit 在幕后发挥了一些作用

[QueryProperty("OpenJob", "OpenJob")]
public partial class NoteAvailabilityViewModel : BaseViewModel {
    
    [ObservableProperty]
    OpenJob openJob;

    public List<String> jobDates;

    public NoteAvailabilityViewModel(JobsService jobsService) {
        if (openJob == null) {
            Debug.Write("its null");

           //It's always null here
           //When, how is it set so I can access it in the viewmodel?

        }
        else {
            Debug.Write("its not null");

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在导航到此页面的页面中,我有一个在单击按钮时触发的 ICommand

[ICommand]
public static void NoteAvailabilityAsync(OpenJob openJob) {
    Shell.Current.GoToAsync($"{nameof(NoteAvailabilityPage)}", true, new Dictionary<string, object> {
            {"OpenJob", …
Run Code Online (Sandbox Code Playgroud)

.net c# xaml maui .net-maui

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

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:如何在绑定中引用颜色?

所以我有一个标签,我想从 mvvm 变量设置文本颜色。

虚拟机

[ObservableProperty]
private string col = "White";
Run Code Online (Sandbox Code Playgroud)

XAML

<Label Text="{Binding Name}"
       FontSize="20"
       TextColor="{Binding Col}">
Run Code Online (Sandbox Code Playgroud)

所以一般来说 TextColor="White" 效果很好

我尝试过使用 Color 对象 https://learn.microsoft.com/en-us/dotnet/maui/user-interface/graphics/colors

例如

[ObservableProperty]
private Color col = Colors.White;
Run Code Online (Sandbox Code Playgroud)

但我无法让它发挥作用。

我曾希望一个简单的字符串能够工作......哦,我徒劳的希望......

谢谢,G。

编辑:我应该补充一点,我的标签位于 CollectionView 中?

大编辑:它适用于独立标签,即

  [ObservableProperty]
  private Color col = Colors.White;
Run Code Online (Sandbox Code Playgroud)

所以问题是标签是否在 CollectionView 中。我想知道为什么?

编辑:因为 CollectionView 绑定到 ItemsSource - 啊,真是个假人!

maui .net-6.0

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

Maui App 中数据库初始化代码放在哪里

我创建了一个 .net 标准类库服务,用于在我的新 Maui 应用程序中访问 sqlite 数据库。我的问题是在哪里调用初始化代码。我添加了 DI 注册,其中MauiProgram.cs将 my 注册DbService为接口的实现IDbService

builder
    .Services
        .AddSingleton<IDbService>(serviceProvider => 
            ActivatorUtilities.CreateInstance<DbService>(serviceProvider, databasePath))
        .AddSingleton<MainViewModel>()
        .AddSingleton<MainPage>();
Run Code Online (Sandbox Code Playgroud)

初始化数据库的代码(创建表、加载测试数据)我目前已放入主页视图模型的构造函数中,该视图模型注册为单例,因此初始化只会发生一次。但显然在构造函数中调用异步初始化代码是错误的。正确的位置在哪里?

Task.Run(async () =>
{
    await _dbService.Initialise();
    if (!(await _dbService.GetExperiences(1, 0)).Any())
        await _dbService.LoadTestData();
    await GetData();
}).GetAwaiter().GetResult();
Run Code Online (Sandbox Code Playgroud)

c# sqlite-net .net-core maui

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

如何为 MAUI 项目设置 API 级别

我从 dotnet maui 开始,目前文档非常差。我有一个针对旧版 Android API 级别的现有项目,并为此准备了环境。当我尝试构建它时,出现错误,

error XA5207: Could not find android.jar for API level 31. This means the Android SDK platform for API level 31 is not installed. Either install it in the Android SDK Manager (Tools > Open Android SDK Manager...), or change the Xamarin.Android project to target an API version that is installed
Run Code Online (Sandbox Code Playgroud)

我找不到更改 API 级别的选项。

编辑:我可以找到一种方法来定位较新的版本,并将其添加为答案,但超过 30 岁的绰号仍未被识别,并且我收到错误,

NETSDKZZZZ: Error getting pack version: Pack 'Microsoft.Android.Ref.30' was not present in workload manifests.
Run Code Online (Sandbox Code Playgroud)

.net .net-core maui

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

如何将查询参数传递给.Net Maui ViewModel

在我的接收视图模型中,我想在异步方法 GetMovies() 中引用 [QueryParameter] 并运行它以用电影填充页面。我已将断点放置在 MovieListGenrePageViewModel 中的 GetMovies 方法处。调用时, selectedGenre 为 null,但已在 {Binding} 中返回。我缺少什么?

using System.Collections.ObjectModel;
using System.Diagnostics;
using CommunityToolkit.Mvvm.ComponentModel;
using TimesNewsApp.Models;
using TimesNewsApp.Services;

namespace TimesNewsApp.ViewModels
{
    [QueryProperty(nameof(SelectedGenre), nameof(SelectedGenre))]
    public partial class MovieListGenrePageViewModel : BaseViewModel
    {
        public ObservableCollection<Result> Movie { get;} = new();


        private Genre selectedGenre;

        public Genre SelectedGenre
        {
            get => selectedGenre;
            set
            {
                SetProperty(ref selectedGenre, value);
            }
        }

        NewsApiManager apiService;

        public Command GetMovieComand { get; }

        public MovieListGenrePageViewModel(NewsApiManager apiService)
        {
            this.apiService = apiService;

            Task.Run(async () => await GetMovies(SelectedGenre)); …
Run Code Online (Sandbox Code Playgroud)

.net c# mvvm visual-studio maui

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

MAUI 项目中的预处理器指令在哪里设置

我有一个在 Windows 机器上为 iOS 和 Android 设备构建的 MAUI 项目。那里一切正常。

当我尝试在 Visual Studio for Mac 上运行相同的代码时,它会失败,因为它找不到预处理器指令中定义的 iOS 设备代码,如下所示:

#if ANDROID
//do some Android stuff
#elif IOS
//define some properties
#endif
Run Code Online (Sandbox Code Playgroud)

它不会编译和运行,因为它说找不到“IOS”块中定义的属性。它将“ANDROID”预处理器指令块中的代码显示为活动状态。在 Windows 上,它会根据您选择的调试器输出(例如 Android 模拟器或设备、iOS 模拟器或设备)自动选择要使用的正确指令。它不会在 Mac 上执行此操作,那么有什么方法可以在 Mac 的 VS 2022 17.3 中强制执行此操作吗?

visual-studio maui

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

如何以编程方式移动和最小化 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
查看次数

标签 统计

maui ×10

c# ×5

.net ×4

.net-maui ×3

.net-core ×2

visual-studio ×2

xaml ×2

.net-6.0 ×1

android ×1

mvvm ×1

sqlite-net ×1

winui-3 ×1