Opakované použití vlastních rendererů v .NET MAUI
I když je použití obslužných rutin .NET MAUI (Multi-Platform App UI) rozhraní .NET MAUI (.NET MAUI) k přizpůsobení a vytváření mnoha výhod, je stále možné používat vlastní renderery Xamarin.Forms v aplikacích .NET MAUI. Další informace o vlastních rendererech najdete v tématu Vlastní renderery Xamarin.Forms.
Šeděné vykreslovací moduly
.NET MAUI poskytuje šeděné renderery, které umožňují snadné opětovné použití vlastních rendererů Xamarin.Forms za předpokladu, že renderer je odvozen od , v iOSu a Androidu a TableViewRenderer
VisualElementRenderer
. ShellRenderer
ListViewRenderer
FrameRenderer
Proces migrace vlastního rendereru Xamarin.Forms, který je odvozen od FrameRenderer
, ListViewRenderer
ShellRenderer
, TableViewRenderer
a VisualElementRenderer
do rendereru .NET MAUI shimmed je:
- Přidejte vlastní kód rendereru do příslušného umístění v projektu .NET MAUI. Další informace najdete v tématu Přidání kódu.
using
Upravte direktivy a odeberteExportRenderer
atributy. Další informace naleznete v tématu Úpravy direktiv using a další kód.- Zaregistrujte vykreslovací moduly. Další informace naleznete v tématu Registrace rendererů.
- Využití rendererů Další informace naleznete v tématu Využití vlastních rendererů.
Pokud chcete předvést použití vlastních rendererů v rozhraní .NET MAUI, zvažte ovládací prvek Xamarin.Forms s názvem PressableView
. Tento ovládací prvek zveřejňuje Pressed
a Released
události na základě gest specifických pro platformu. Vlastní implementace rendereru se skládá ze 3 souborů:
PressableView.cs
- multiplatformní třída, která rozšiřujeContentView
.PressableViewRenderer.cs
- implementace Androidu, která je odvozena odVisualElementRenderer
.PressableViewRenderer.cs
- implementace iOSu, která je odvozena odVisualElementRenderer
.
Poznámka:
Alternativou k použití vlastního rendereru Xamarin.Forms v .NET MAUI je migrace vlastního rendereru do obslužné rutiny .NET MAUI. Další informace najdete v tématu Migrace vlastního rendereru Xamarin.Forms do obslužné rutiny .NET MAUI.
Přidání kódu
Pokud používáte multi-cílený projekt .NET MAUI, můžete soubor pro různé platformy přesunout na libovolné místo mimo složku Platformy a soubory implementace specifické pro platformu by se měly přesunout do odpovídající složky Platformy :
Pokud má vaše řešení samostatné projekty pro jednotlivé platformy, měli byste přesunout soubory implementace specifické pro danou platformu do odpovídajících projektů.
Úprava direktiv using a jiného kódu
Všechny odkazy na Xamarin.Forms.*
obory názvů je potřeba odebrat a pak můžete vyřešit související typy na Microsoft.Maui.*
. To musí nastat ve všech souborech, které jste přidali do projektů .NET MAUI.
Měli byste také odebrat všechny ExportRenderer
atributy, protože nebudou potřeba v .NET MAUI. Například by se měly odebrat následující položky:
[assembly: ExportRenderer(typeof(PressableView), typeof(PressableViewRenderer))]
Registrace rendererů
Ovládací prvek pro různé platformy a jeho renderery musí být zaregistrované v aplikaci, aby bylo možné ho využívat. K tomu by mělo dojít v CreateMauiApp
metodě ve MauiProgram
třídě v projektu aplikace, což je vstupní bod aplikace pro různé platformy:
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
})
.ConfigureMauiHandlers((handlers) =>
{
#if ANDROID
handlers.AddHandler(typeof(PressableView), typeof(XamarinCustomRenderer.Droid.Renderers.PressableViewRenderer));
#elif IOS
handlers.AddHandler(typeof(PressableView), typeof(XamarinCustomRenderer.iOS.Renderers.PressableViewRenderer));
#endif
});
return builder.Build();
}
}
Vykreslovací moduly jsou registrovány pomocí ConfigureMauiHandlers metody a AddHandler metody. Tento první argument metody AddHandler je typ ovládacího prvku pro různé platformy, přičemž druhým argumentem je jeho typ rendereru.
Důležité
Pouze renderery, které jsou odvozeny od , v iOSu, ShellRenderer
v iOSu a AndroiduTabbedRenderer
, TableViewRenderer
a VisualElementRenderer
lze je zaregistrovat pomocí AddHandler metody. NavigationRenderer
ListViewRenderer
FrameRenderer
Využití vlastních rendererů
Vlastní renderer je možné využívat v aplikaci .NET MAUI jako vlastní ovládací prvek:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:controls="clr-namespace:XamarinCustomRenderer.Controls"
x:Class="MauiCustomRenderer.MainPage">
<Grid BackgroundColor="#f1f1f1">
<controls:PressableView Pressed="Handle_Pressed"
Released="Handle_Released"
HorizontalOptions="Center"
VerticalOptions="Center">
<Grid BackgroundColor="#202020"
HorizontalOptions="Center"
VerticalOptions="Center">
<Label Text="Press Me"
FontSize="16"
TextColor="White"
Margin="24,20"
HorizontalTextAlignment="Center" />
</Grid>
</controls:PressableView>
</Grid>
</ContentPage>