Ponowne używanie efektów w programie .NET MAUI
Chociaż istnieje wiele korzyści związanych z używaniem programów obsługi interfejsu użytkownika aplikacji wieloplatformowych platformy .NET (.NET MAUI) w celu dostosowywania kontrolek, nadal można używać efektów platformy Xamarin.Forms w aplikacjach .NET MAUI. Aby uzyskać więcej informacji na temat efektów, zobacz Efekty platformy Xamarin.Forms.
Proces migracji efektu zestawu narzędzi Xamarin.Forms do platformy .NET MAUI to:
- Usuń atrybuty efektu z klas efektów. Aby uzyskać więcej informacji, zobacz Usuwanie atrybutów efektu.
- Usuń dyrektywy efektu
using
. Aby uzyskać więcej informacji, zobacz Usuwanie dyrektyw using. - Dodaj kod efektu do odpowiedniej lokalizacji w projekcie aplikacji .NET MAUI. Aby uzyskać więcej informacji, zobacz Dodawanie kodu efektu.
- Zarejestruj efekt. Aby uzyskać więcej informacji, zobacz Rejestrowanie efektu.
- Korzystanie z efektu MAUI platformy .NET. Aby uzyskać więcej informacji, zobacz Korzystanie z efektu.
Usuń atrybuty efektu
Wszystkie ResolutionGroupNameAttribute
atrybuty i ExportEffectAttribute
powinny zostać usunięte z klas efektów.
Usuwanie dyrektyw using
Wszystkie odwołania do Xamarin.Forms
przestrzeni nazw i Xamarin.Forms.Platform.*
powinny zostać usunięte z klas efektów.
Dodawanie kodu efektu
Jeśli używasz wielokierunkowego projektu .NET MAUI, kod efektu powinien zostać połączony w jeden plik i umieszczony poza folderem Platformy . Wymaga to połączenia RoutingEffect implementacji i PlatformEffect implementacji w jeden plik przy użyciu kompilacji warunkowej wokół kodu platformy. Jeśli jednak twoje rozwiązanie ma oddzielne projekty na platformę, należy przenieść pliki efektu specyficznego dla platformy do odpowiednich projektów.
W programie .NET MAUI RoutingEffect klasa znajduje się w Microsoft.Maui.Controls
przestrzeni nazw. Ta przestrzeń nazw jest jedną z niejawnych global using
dyrektyw .NET MAUI, dlatego nie trzeba dodawać using
do niej dyrektywy. PlatformEffect Jednak klasa znajduje się w Microsoft.Maui.Controls.Platform
przestrzeni nazw, dla której należy dodać dyrektywęusing
.
Poniższy przykład kodu przedstawia klasę FocusRoutingEffect
i jej implementacje platformy połączone w jeden plik:
using Microsoft.Maui.Controls.Platform;
namespace MyMauiApp.Effects;
internal class FocusRoutingEffect : RoutingEffect
{
}
#if ANDROID
internal class FocusPlatformEffect : PlatformEffect
{
protected override void OnAttached()
{
// Customize the control here
}
protected override void OnDetached()
{
// Cleanup the control customization here
}
}
#elif IOS
internal class FocusPlatformEffect : PlatformEffect
{
protected override void OnAttached()
{
// Customize the control here
}
protected override void OnDetached()
{
// Cleanup the control customization here
}
}
#elif WINDOWS
internal class FocusPlatformEffect : PlatformEffect
{
protected override void OnAttached()
{
// Customize the control here
}
protected override void OnDetached()
{
// Cleanup the control customization here
}
}
#endif
Rejestrowanie efektu
W projekcie aplikacji .NET MAUI otwórz MauiProgram.cs i wywołaj metodę ConfigureEffects w MauiAppBuilder obiekcie w metodzie CreateMauiApp
:
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureEffects(effects =>
{
effects.Add<FocusRoutingEffect, FocusPlatformEffect>();
});
return builder.Build();
}
Efekt jest zarejestrowany w metodzie ConfigureEffects , której configureDelegate
rejestruje implementację PlatformEffect względem jej RoutingEffect implementacji.
Korzystanie z efektu
Efekt można użyć w aplikacji .NET MAUI, dodając go do Effects kolekcji kontrolki:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:MyMauiApp.Effects"
x:Class="MyMauiApp.MainPage">
<VerticalStackLayout>
<Entry Text="Enter your text">
<Entry.Effects>
<local:FocusRoutingEffect />
</Entry.Effects>
</Entry>
</VerticalStackLayout>
</ContentPage>