.NET MAUI'de efektleri yeniden kullanma
Denetimleri özelleştirmek için .NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI) işleyicilerini kullanmanın birçok avantajı olsa da, .NET MAUI uygulamalarında Xamarin.Forms efektlerini kullanmak mümkündür. Efektler hakkında daha fazla bilgi için bkz . Xamarin.Forms efektleri.
Xamarin.Forms efektini .NET MAUI'ye geçirme işlemi şu şekildedir:
- Efekt sınıflarınızdan efekt özniteliklerini kaldırın. Daha fazla bilgi için bkz . Efekt özniteliklerini kaldırma.
- Efekt
using
yönergelerini kaldırın. Daha fazla bilgi için bkz . Using yönergelerini kaldırma. - Efekt kodunu .NET MAUI uygulama projenizde uygun konuma ekleyin. Daha fazla bilgi için bkz . Efekt kodunu ekleme.
- Efekti kaydedin. Daha fazla bilgi için bkz . Efekti kaydetme.
- .NET MAUI efektinizi kullanma. Daha fazla bilgi için bkz . Efekti kullanma.
Efekt özniteliklerini kaldırma
Tüm ResolutionGroupNameAttribute
ve ExportEffectAttribute
öznitelikleri efekt sınıflarınızdan kaldırılmalıdır.
Using yönergelerini kaldırma
ve Xamarin.Forms.Platform.*
ad alanlarına yapılan Xamarin.Forms
tüm başvurular efekt sınıflarınızdan kaldırılmalıdır.
Efekt kodunu ekleme
.NET MAUI çok hedefli bir proje kullanıyorsanız efekt kodunuz tek bir dosyada birleştirilmeli ve Platformlar klasörünün dışına yerleştirilmelidir. Bu, uygulama ve PlatformEffect uygulamalarınızı platform kodu çevresinde koşullu derleme kullanarak tek bir dosyada birleştirmenizi RoutingEffect gerektirir. Ancak çözümünüzde platform başına ayrı projeler varsa platforma özgü efekt dosyalarını ilgili projelere taşımanız gerekir.
.NET MAUI'de RoutingEffect sınıfı ad alanındadır Microsoft.Maui.Controls
. Bu ad alanı .NET MAUI'nin örtük global using
yönergelerinden biridir ve bu nedenle bunun için bir using
yönerge eklemeniz gerekmez. Ancak, PlatformEffect sınıfı ad alanındadır Microsoft.Maui.Controls.Platform
ve bunun için bir using
yönerge eklemeniz gerekir.
Aşağıdaki kod örneği, tek bir dosyada birleştirilmiş bir FocusRoutingEffect
sınıfı ve platform uygulamalarını gösterir:
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
Efekti kaydetme
.NET MAUI uygulama projenizde MauiProgram.cs açın ve yöntemindeki MauiAppBuilder nesnede yöntemini çağırın ConfigureEffectsCreateMauiApp
:
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureEffects(effects =>
{
effects.Add<FocusRoutingEffect, FocusPlatformEffect>();
});
return builder.Build();
}
etkisi, uygulamasına ConfigureEffects karşı uygulamayı kaydeden configureDelegate
PlatformEffect yöntemiyle RoutingEffect kaydedilir.
Efekti kullanma
Etki, bir denetim koleksiyonuna eklenerek Effects bir .NET MAUI uygulamasında kullanılabilir:
<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>