Aracılığıyla paylaş


Xamarin.Forms Görsel oluşturucu oluşturma

Xamarin.FormsGörsel, işleyicilerin alt sınıf Xamarin.Forms görünümlere gerek kalmadan oluşturulmasını ve nesnelere VisualElement seçmeli olarak uygulanmasını sağlar. Türünün bir parçası ExportRendererAttributeolarak türünü belirten işleyiciIVisual, varsayılan işleyici yerine görünümlerde kabul edilenleri işlemek için kullanılır. oluşturucu seçim zamanında görünümün Visual özelliği incelenir ve işleyici seçim işlemine eklenir.

Önemli

Visual Şu anda görünüm işlendikten sonra özellik değiştirilemez, ancak bu durum gelecekteki bir sürümde değişecektir.

Görsel işleyici oluşturma ve kullanma Xamarin.Forms işlemi şu şekildedir:

  1. Gerekli görünüm için platform işleyicileri oluşturun. Daha fazla bilgi için bkz . oluşturucu oluşturma.
  2. türünden IVisualtüretilen bir tür oluşturun. Daha fazla bilgi için bkz . IVisual türü oluşturma.
  3. IVisual Oluşturucuları süsleyen öğesinin ExportRendererAttribute bir parçası olarak türünü kaydedin. Daha fazla bilgi için bkz . IVisual türünü kaydetme.
  4. Görünümdeki özelliğini ada ayarlayarak Visual Görsel işleyiciyi IVisual kullanın. Daha fazla bilgi için bkz . Görsel işleyiciyi kullanma.
  5. [isteğe bağlı] Tür için IVisual bir ad kaydedin. Daha fazla bilgi için bkz . IVisual türü için bir ad kaydetme.

Platform işleyicileri oluşturma

oluşturucu sınıfı oluşturma hakkında bilgi için bkz . Özel oluşturucular. Ancak, bir Xamarin.Forms Görsel işleyicinin görünümü alt sınıfa almak zorunda kalmadan görünüme uygulandığını unutmayın.

Burada özetlenen işleyici sınıfları, metnini gölgeyle görüntüleyen bir özel Button uygulama uygular.

iOS

Aşağıdaki kod örneği, iOS için düğme işleyicisini gösterir:

public class CustomButtonRenderer : ButtonRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
    {
        base.OnElementChanged(e);

        if (e.OldElement != null)
        {
            // Cleanup
        }

        if (e.NewElement != null)
        {
            Control.TitleShadowOffset = new CoreGraphics.CGSize(1, 1);
            Control.SetTitleShadowColor(Color.Black.ToUIColor(), UIKit.UIControlState.Normal);
        }
    }
}

Android

Aşağıdaki kod örneği, Android için düğme işleyicisini gösterir:

public class CustomButtonRenderer : Xamarin.Forms.Platform.Android.AppCompat.ButtonRenderer
{
    public CustomButtonRenderer(Context context) : base(context)
    {
    }

    protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
    {
        base.OnElementChanged(e);

        if (e.OldElement != null)
        {
            // Cleanup
        }

        if (e.NewElement != null)
        {
            Control.SetShadowLayer(5, 3, 3, Color.Black.ToAndroid());
        }
    }
}

IVisual türü oluşturma

Platformlar arası kitaplığınızda, türünden IVisualtüretilen bir tür oluşturun:

public class CustomVisual : IVisual
{
}

Daha CustomVisual sonra türü işleyici sınıflarına göre kaydedilebilir ve nesnelerin işleyicileri kullanmayı kabul etmelerine izin Button verilir.

IVisual türünü kaydetme

Platform projelerinde derleme düzeyine öğesini ExportRendererAttribute ekleyin:

[assembly: ExportRenderer(typeof(Xamarin.Forms.Button), typeof(CustomButtonRenderer), new[] { typeof(CustomVisual) })]
namespace VisualDemos.iOS
{
    public class CustomButtonRenderer : ButtonRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
        {
            // ...
        }
    }
}

iOS platform projesi için bu örnekte, ExportRendererAttribute sınıfın CustomButtonRenderer üçüncü bağımsız değişken olarak kaydedilmiş türüyleIVisual, kullanan Button nesneleri işlemek için kullanılacağını belirtir. Türünün bir parçası ExportRendererAttributeolarak türünü belirten işleyiciIVisual, varsayılan işleyici yerine görünümlerde kabul edilenleri işlemek için kullanılır.

Görsel işleyiciyi kullanma

Bir Button nesne, özelliğini Customolarak ayarlayarak işleyici sınıflarını Visual kullanmayı kabul edebilir:

<Button Visual="Custom"
        Text="CUSTOM BUTTON"
        BackgroundColor="{StaticResource PrimaryColor}"
        TextColor="{StaticResource SecondaryTextColor}"
        HorizontalOptions="FillAndExpand" />

Not

XAML'de bir tür dönüştürücüsü, özellik değerine "Görsel" sonekini ekleme gereksinimini Visual ortadan kaldırır. Ancak, tam tür adı da belirtilebilir.

Eşdeğer C# kodu:

Button button = new Button { Text = "CUSTOM BUTTON", ... };
button.Visual = new CustomVisual();

oluşturucu seçim zamanında öğesinin Visual Button özelliği incelenir ve işleyici seçim işlemine dahil edilir. bir işleyici bulunamazsa, Xamarin.Forms varsayılan işleyici kullanılır.

Aşağıdaki ekran görüntüleri, işlenen Buttonmetnini gölgeyle görüntüleyen öğesini gösterir:

iOS ve Android'de gölge metin içeren özel Düğmenin ekran görüntüsü

IVisual türü için bir ad kaydetme

VisualAttribute isteğe bağlı olarak türü için farklı bir ad kaydetmek için IVisual kullanılabilir. Bu yaklaşım, farklı Görsel kitaplıkları arasındaki adlandırma çakışmalarını çözmek için veya yalnızca bir Görsele tür adından farklı bir adla başvurmak istediğiniz durumlarda kullanılabilir.

, VisualAttribute platformlar arası kitaplıkta veya platform projesinde derleme düzeyinde tanımlanmalıdır:

[assembly: Visual("MyVisual", typeof(CustomVisual))]

Daha IVisual sonra türü kayıtlı adıyla kullanılabilir:

<Button Visual="MyVisual"
        ... />

Not

Bir Görseli kayıtlı adıyla kullanırken herhangi bir "Görsel" soneki eklenmelidir.