.NET MAUI'de özel işleyicileri yeniden kullanma
Denetimleri özelleştirmek ve oluşturmak 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 özel işleyicilerini kullanmak mümkündür. Özel işleyiciler hakkında daha fazla bilgi için bkz . Xamarin.Forms özel işleyicileri.
Dolgulu işleyiciler
.NET MAUI, işleyicinin iOS ve Android TableViewRenderer
VisualElementRenderer
üzerinde , ve kaynaklarından FrameRenderer
ListViewRenderer
ShellRenderer
türetilmiş olması koşuluyla Xamarin.Forms özel işleyicilerinin kolayca yeniden kullanılmasını sağlayan dolgulu işleyiciler sağlar.
, , TableViewRenderer
ListViewRenderer
ShellRenderer
, ve VisualElementRenderer
kaynaklarından FrameRenderer
türetilen bir Xamarin.Forms özel işleyicisini .NET MAUI dolgulu işleyiciye geçirme işlemi şöyledir:
- Özel işleyici kodunu .NET MAUI projelerinizin uygun konumuna ekleyin. Daha fazla bilgi için bkz . Kodu ekleme.
- yönergelerini
using
değiştirin ve öznitelikleri kaldırınExportRenderer
. Daha fazla bilgi için bkz . Yönergeleri ve diğer kodları kullanarak değiştirme. - oluşturucuları kaydedin. Daha fazla bilgi için bkz . oluşturucuları kaydetme.
- oluşturucuları kullanın. Daha fazla bilgi için bkz . Özel işleyicileri kullanma.
.NET MAUI'de özel işleyicilerin kullanılmasını göstermek için adlı PressableView
bir Xamarin.Forms denetimini göz önünde bulundurun. Bu denetim, platforma özgü hareketlere Pressed
göre ve Released
olayları kullanıma sunar. Özel işleyici uygulaması 3 dosyadan oluşur:
PressableView.cs
- genişleten platformlarContentView
arası sınıf.PressableViewRenderer.cs
- 'denVisualElementRenderer
türetilen Android uygulaması.PressableViewRenderer.cs
- 'denVisualElementRenderer
türetilen iOS uygulaması.
Not
.NET MAUI'de Xamarin.Forms özel işleyicisi kullanmanın bir alternatifi, özel işleyiciyi bir .NET MAUI işleyicisine geçirmektir. Daha fazla bilgi için bkz . Xamarin.Forms özel işleyicisini .NET MAUI işleyicisine geçirme.
Kod ekleme
.NET MAUI çok hedefli bir proje kullanıyorsanız platformlar arası dosya Platformlar klasörünün dışında herhangi bir yere taşınabilir ve platforma özgü uygulama dosyaları ilgili Platform klasörüne taşınmalıdır:
Çözümünüz platform başına ayrı projelere sahipse platforma özgü uygulama dosyalarını ilgili projelere taşımanız gerekir.
Yönergeleri ve diğer kodları kullanarak değiştirme
Ad alanlarına yapılan tüm başvuruların Xamarin.Forms.*
kaldırılması gerekir ve ardından ilgili türleri olarak Microsoft.Maui.*
çözümleyebilirsiniz. Bu, .NET MAUI projelerine eklediğiniz tüm dosyalarda gerçekleşmektedir.
.NET MAUI'de gerekli olmayacağı için öznitelikleri ExportRenderer
de kaldırmanız gerekir. Örneğin, aşağıdakiler kaldırılmalıdır:
[assembly: ExportRenderer(typeof(PressableView), typeof(PressableViewRenderer))]
oluşturucuları kaydetme
Platformlar arası denetimin ve işleyicilerinin kullanılabilmesi için önce bir uygulamaya kaydedilmesi gerekir. Bu, uygulamanın platformlar arası giriş noktası olan uygulama projenizdeki sınıfındaki yönteminde MauiProgram
gerçekleşmelidirCreateMauiApp
:
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();
}
}
oluşturucular ve AddHandler
yöntemiyle ConfigureMauiHandlers
kaydedilir. Yöntemin AddHandler
ilk bağımsız değişkeni platformlar arası denetim türüdür ve ikinci bağımsız değişken de işleyici türüdür.
Önemli
Yalnızca , , NavigationRenderer
iOS üzerinde, iOS ve Android'de, ShellRenderer
TabbedRenderer
iOS'ta TableViewRenderer
ve VisualElementRenderer
yöntemiyle AddHandler
kaydedilen işleyicilerFrameRenderer
. ListViewRenderer
Özel işleyicileri kullanma
Özel işleyici bir .NET MAUI uygulamasında özel denetim olarak kullanılabilir:
<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>
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin