Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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:
- Gerekli görünüm için platform işleyicileri oluşturun. Daha fazla bilgi için bkz . oluşturucu oluşturma.
- türünden
IVisualtüretilen bir tür oluşturun. Daha fazla bilgi için bkz . IVisual türü oluşturma. IVisualOluşturucuları süsleyen öğesininExportRendererAttributebir parçası olarak türünü kaydedin. Daha fazla bilgi için bkz . IVisual türünü kaydetme.- Görünümdeki özelliğini ada ayarlayarak
VisualGörsel işleyiciyiIVisualkullanın. Daha fazla bilgi için bkz . Görsel işleyiciyi kullanma. - [isteğe bağlı] Tür için
IVisualbir 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:
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.
