我正在使用 .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 活動
正如我所說,我完全遵循了文檔,但仍然出現此錯誤。我讀過其他人也有這個問題。任何人都可以幫忙嗎?
從什麼樣子這項工作已經完成,這樣就可以在級聯自定義映射器與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
}
});
我會看看我是否可以在這里和那裡更新文檔,希望這不會再次中斷;)
編輯:為此更新了維基頁面
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句