.NET Maui 自定義處理程序不起作用,官方文檔有誤?

LazyBitKings

我正在使用 .NET MAUI 製作一個應用程序,我正在嘗試為特定的控件實例實現自定義處理程序(例如,某些條目應該使用我創建的自定義處理程序)。為了實現這一點,我遵循了官方的 MS文檔以下是他們告訴我要使用的設置:

1.首先製作Entry控件的子類:

using Microsoft.Maui.Controls;

namespace MyMauiApp
{
    public class MyEntry : Entry
    {
    }
}

2.我然後自定義EntryHandler以對MyEntry實例執行所需的修改:

using Microsoft.Maui;
using Microsoft.Maui.Controls;
using Microsoft.Maui.Graphics;

namespace MauiApp1
{
    public partial class App : Application
    {
        public App()
        {
            InitializeComponent();

            Microsoft.Maui.Handlers.EntryHandler.EntryMapper[nameof(IView.Background)] = (handler, view) =>
            {
                if (view is MyEntry)
                {
#if __ANDROID__
                    handler.NativeView.SetBackgroundColor(Colors.Red.ToNative());
#elif __IOS__
                  handler.NativeView.BackgroundColor = Colors.Red.ToNative();
                  handler.NativeView.BorderStyle = UIKit.UITextBorderStyle.Line;
#elif WINDOWS
                  handler.NativeView.Background = Colors.Red.ToNative();
#endif
                }
            };
        }
    }
}

問題:這給了我以下錯誤:

嚴重性代碼說明項目文件行抑制狀態錯誤 CS0021 無法將帶有 [] 的索引應用於類型為“IPropertyMapper<IEntry, EntryHandler>”的表達式 MyMauiApp (net6.0-android)、MyMauiApp (net6.0-ios)、MyMauiApp (net6) .0-windows10.0.19041) C:\Users\xxxxxx\source\repos\MyMauiApp\MyMauiApp\App.xaml.cs 24 活動

正如我所說,我完全遵循了文檔,但仍然出現此錯誤。我讀過其他人也有這個問題。任何人都可以幫忙嗎?

杰拉爾德·韋爾斯路易斯

似乎通過此處此處的此 pr 在該領域進行了一些重大更改

從什麼樣子這項工作已經完成,這樣就可以在級聯自定義映射器與AppendToMappingPrependToMapping或完全改變了整個映射ModifyMapping

這裡不解釋所有的變化,讓我們關注你的情況。這意味著,而不是這一行Microsoft.Maui.Handlers.EntryHandler.EntryMapper[nameof(IView.Background)] = (handler, view) =>

您現在應該將其聲明為: Microsoft.Maui.Handlers.EntryHandler.EntryMapper.AppendToMapping(nameof(IView.Background), (handler, view) =>

請注意,您現在也應該)在右括號上添加一個,從而生成完整的代碼:

Microsoft.Maui.Handlers.EntryHandler.EntryMapper.AppendToMapping(nameof(IView.Background), (handler, view) =>
{
    if (view is MyEntry)
    {
#if __ANDROID__
        handler.NativeView.SetBackgroundColor(Colors.Red.ToNative());
#elif __IOS__
        handler.NativeView.BackgroundColor = Colors.Red.ToNative();
        handler.NativeView.BorderStyle = UIKit.UITextBorderStyle.Line;
#elif WINDOWS
        handler.NativeView.Background = Colors.Red.ToNative();
#endif
    }
});

我會看看我是否可以在這里和那裡更新文檔,希望這不會再次中斷;)

編輯:為此更新了維基頁面

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

.NET Maui 自定義處理程序將參數從 xaml 代碼傳遞到處理程序代碼?

在 .NET MAUI 应用程序中将服务注入视图模型

.NET MAUI 中是否有保存文件的对话框?

MAUI .NET 设置窗口大小

.Net MAUI 是否与 .NET Standard 2.0 兼容?

.net maui 中的自定义控件和渲染器会发生什么?

.Net MAUI Blazor 应用程序 | 服务器端还是客户端?

.NET MAUI 无法在 Windows 上运行

.NET MAUI 边框和框架之间的区别

如何在 .NET MAUI 中隐藏 ImageButton

MAUI:自定义条目

.net maui preview 10 不是單個項目

.NET MAUI Community Toolkit Popup PopupHandler 不兼容

如何在 Android 上使用来自 .NET MAUI 的 BroadcastReceiver?

如何使用 c# 而不是 xaml 创建 .Net Maui ContentPage?

如何在 .NET MAUI ViewModel 中显示警报

.NET Maui MVVM 选择器绑定 SelectedIndexChanged 事件

如何播放音频文件 - .NET MAUI

.net maui MVVM 从 CollectionView 绑定 SelectedItemCommand 和 SelectedItemParameter

如何在 .NET MAUI/Blazor 混合上的 TabBar 上导航?

.net Maui 数据绑定到外壳弹出项 IsVisible 属性

.NET MAUI/Xamarin.Forms 中的实体框架核心

将 .NET Maui Preview 14 发布到 App Store 和 Google Play

如何在 .net MAUI 中删除不需要编译的平台?

.NET MAUI 标签绑定未在 C# 中更新 - 不是 MVVM

.net maui 无法获取 Observable 集合中的更新字段以在绑定集合视图中更新

在 .NET MAUI/Xamarin.Forms 中使用 MVVM 的手势识别器

.Net Maui MVVM - 在页面/视图打开时填充 CollectionView 的最佳方法是什么?

信任其他 CA 并在 net6 MAUI 解决方案中使用 Android 证书存储