Aracılığıyla paylaş


.NET MAUI'de özel işleyicileri yeniden kullanma

Örneğe göz atın. Örneğe göz atın

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 TableViewRendererVisualElementRendererüzerinde , ve kaynaklarından FrameRendererListViewRendererShellRenderer türetilmiş olması koşuluyla Xamarin.Forms özel işleyicilerinin kolayca yeniden kullanılmasını sağlayan dolgulu işleyiciler sağlar.

, , TableViewRendererListViewRendererShellRenderer, ve VisualElementRenderer kaynaklarından FrameRenderertüretilen bir Xamarin.Forms özel işleyicisini .NET MAUI dolgulu işleyiciye geçirme işlemi şöyledir:

  1. Özel işleyici kodunu .NET MAUI projelerinizin uygun konumuna ekleyin. Daha fazla bilgi için bkz . Kodu ekleme.
  2. yönergelerini using değiştirin ve öznitelikleri kaldırın ExportRenderer . Daha fazla bilgi için bkz . Yönergeleri ve diğer kodları kullanarak değiştirme.
  3. oluşturucuları kaydedin. Daha fazla bilgi için bkz . oluşturucuları kaydetme.
  4. 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ı PressableViewbir 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 platformlar ContentViewarası sınıf.
  • PressableViewRenderer.cs - 'den VisualElementRenderertüretilen Android uygulaması.
  • PressableViewRenderer.cs - 'den VisualElementRenderertü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:

oluşturucu dosyalarınızı taşıyın.

Çö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, ShellRendererTabbedRenderer iOS'ta TableViewRendererve 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>