.NET Maui 自定义处理程序不起作用,官方文档有误吗?
Posted
技术标签:
【中文标题】.NET Maui 自定义处理程序不起作用,官方文档有误吗?【英文标题】:.NET Maui Custom Handlers not working, official docs is wrong? 【发布时间】:2022-01-03 17:42:42 【问题描述】:我正在使用 .NET MAUI 制作应用程序,并且我正在尝试为特定的控件实例实现自定义处理程序(例如,某些条目应该使用我创建的自定义处理程序)。为此,我关注了官方的 MS docs。以下是他们告诉我要使用的设置:
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
' 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 活动
正如我所说,我完全按照文档进行操作,但仍然出现此错误。我读过其他人也有这个问题。有人可以帮忙吗?
【问题讨论】:
【参考方案1】:通过此公关here 和here,似乎已在该领域进行了一些重大更改。
从看起来已经完成的情况来看,您可以使用AppendToMapping
和PrependToMapping
在映射器中级联自定义,或者使用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
);
我会看看我是否可以在这里和那里更新文档,希望这不会再次中断;)
编辑:为此更新了wiki page
【讨论】:
嗨杰拉德!这确实做到了。惊人的。感谢您的帮助。 PS:喜欢你的视频,继续努力! 谢谢!期待不久的视频! :D 太棒了。我很高兴我提出这个,会为很多人节省很多时间哈哈!以上是关于.NET Maui 自定义处理程序不起作用,官方文档有误吗?的主要内容,如果未能解决你的问题,请参考以下文章
OnClientClick 自定义消息框之前 Onclick 事件处理程序不起作用
使用中间件的全局异常处理在 ASP.Net Core 应用程序中不起作用