Davranışlar

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

.NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI) davranışları, alt sınıfa almak zorunda kalmadan kullanıcı arabirimi denetimlerine işlevsellik eklemenize olanak tanır. Bunun yerine, işlev bir davranış sınıfında uygulanır ve denetimin bir parçasıymış gibi denetime eklenir.

Davranışlar, denetimin API'siyle doğrudan denetime kısa bir şekilde bağlanacak ve birden fazla uygulamada yeniden kullanılmak üzere paketlenebileceği şekilde doğrudan etkileşime alındığından, normalde arka planda kod olarak yazmanız gereken kodu uygulamanıza olanak tanır. Bunlar, denetimler için aşağıdakiler gibi tam kapsamlı işlevler sağlamak için kullanılabilir:

  • e-posta doğrulayıcı ekleme Entry.
  • Dokunma hareketi tanıyıcısı kullanarak derecelendirme denetimi oluşturma.
  • Animasyonu denetleme.

.NET MAUI üç farklı davranış türünü destekler:

Ekli davranışlar

Ekli davranışlar, bir veya daha fazla ekli özelliğe sahip statik sınıflardır. Ekli özellik, özel bir bağlanabilir özellik türüdür. Bunlar bir sınıfta tanımlanır, ancak diğer nesnelere eklenir ve XAML'de bir sınıf ve noktayla ayrılmış bir özellik adı içeren öznitelikler olarak tanınabilir. Ekli özellikler hakkında daha fazla bilgi için bkz . Ekli özellikler.

Ekli bir özellik, özelliğin değeri değiştiğinde (örneğin, özelliğin bir denetimde ayarlandığı zaman) yürütülecek bir temsilci tanımlayabilir propertyChanged . propertyChanged Temsilci yürütürken, eklendiği denetime ve özelliğin eski ve yeni değerlerini içeren parametrelere bir başvuru geçirilir. Bu temsilci, geçirilen başvuruyu aşağıdaki gibi düzenleyerek özelliğin eklendiği denetime yeni işlevler eklemek için kullanılabilir:

  1. Temsilci propertyChanged , olarak alınan BindableObjectdenetim başvuruyu, davranışın geliştirmek üzere tasarlandığı denetim türüne yazar.
  2. Temsilci propertyChanged denetimin özelliklerini değiştirir, denetimin yöntemlerini çağırır veya temel davranış işlevselliğini uygulamak için denetimin kullanıma sunduğu olaylar için olay işleyicilerini kaydeder.

Uyarı

Ekli davranışlar, özellikler ve yöntemlerle static bir static sınıfta tanımlanır. Bu durum içeren ekli davranışlar oluşturmayı zorlaştırır.

Ekli davranış oluşturma

Ekli davranış, temsilciyi belirten ekli bir özellik içeren statik bir propertyChanged sınıf oluşturularak uygulanabilir.

Aşağıdaki örnekte, kullanıcı tarafından kırmızı renkli bir Entry denetime doublegirilen değeri vurgulayan sınıfı gösterilmektedir AttachedNumericValidationBehavior .

public static class AttachedNumericValidationBehavior
{
    public static readonly BindableProperty AttachBehaviorProperty =
        BindableProperty.CreateAttached("AttachBehavior", typeof(bool), typeof(AttachedNumericValidationBehavior), false, propertyChanged: OnAttachBehaviorChanged);

    public static bool GetAttachBehavior(BindableObject view)
    {
        return (bool)view.GetValue(AttachBehaviorProperty);
    }

    public static void SetAttachBehavior(BindableObject view, bool value)
    {
        view.SetValue(AttachBehaviorProperty, value);
    }

    static void OnAttachBehaviorChanged(BindableObject view, object oldValue, object newValue)
    {
        Entry entry = view as Entry;
        if (entry == null)
        {
            return;
        }

        bool attachBehavior = (bool)newValue;
        if (attachBehavior)
        {
            entry.TextChanged += OnEntryTextChanged;
        }
        else
        {
            entry.TextChanged -= OnEntryTextChanged;
        }
    }

    static void OnEntryTextChanged(object sender, TextChangedEventArgs args)
    {
        double result;
        bool isValid = double.TryParse(args.NewTextValue, out result);
        ((Entry)sender).TextColor = isValid ? Colors.Black : Colors.Red;
    }
}

Bu örnekte, sınıfı, AttachedNumericValidationBehavior eklendiği denetime davranışın eklenmesini veya kaldırılmasını denetleyen bir static alıcı ve ayarlayıcı ile adlı AttachBehavior bir ekli özellik içerir. Bu ekli özellik, özelliğin OnAttachBehaviorChanged değeri değiştiğinde yürütülecek yöntemi kaydeder. Bu yöntem, ekli özelliğin TextChanged değerine göre olay için bir olay işleyicisini AttachBehavior kaydeder veya kaydını geri alır. Davranışın temel işlevselliği yöntemi tarafından OnEntryTextChanged sağlanır. Bu yöntem, içine girilen Entry değeri ayrıştırıp değer değilse doubleözelliğini kırmızı olarak ayarlarTextColor.

Ekli davranışı kullanma

Ekli davranış, hedef denetimde ekli özelliği ayarlanarak kullanılabilir.

Aşağıdaki örnekte, öğesine ekli özelliğini ekleyerek sınıfını AttachBehavior kullanma AttachedNumericValidationBehaviorEntry gösterilmektedirEntry:


<ContentPage ...
             xmlns:local="clr-namespace:BehaviorsDemos">
    <Entry Placeholder="Enter a System.Double" local:AttachedNumericValidationBehavior.AttachBehavior="true" />
</ContentPage>

C# ile eşdeğeri Entry aşağıdaki kod örneğinde gösterilmiştir:

Entry entry = new Entry { Placeholder = "Enter a System.Double" };
AttachedNumericValidationBehavior.SetAttachBehavior(entry, true);

Aşağıdaki ekran görüntüsünde, geçersiz girişe yanıt veren ekli davranış gösterilmektedir:

Screenshot of attached behavior responding to invalid input

Dekont

Ekli davranışlar belirli bir denetim türü (veya birçok denetime uygulanabilen bir üst sınıf) için yazılır ve yalnızca uyumlu bir denetime eklenmelidir.

Ekli davranışı kaldırma

Sınıfı, AttachedNumericValidationBehavior ekli özelliği falseolarak ayarlanarak AttachBehavior bir denetimden kaldırılabilir:

<Entry Placeholder="Enter a System.Double" local:AttachedNumericValidationBehavior.AttachBehavior="false" />

Çalışma zamanında, OnAttachBehaviorChanged ekli özelliğin AttachBehavior değeri olarak ayarlandığında falseyöntemi yürütülür. Ardından OnAttachBehaviorChanged yöntemi, denetimle etkileşim kurarken davranışın yürütülmediğine emin olarak olay için TextChanged olay işleyicisinin kaydını kaldıracaktır.

.NET MAUI davranışları

.NET MAUI davranışları, veya Behavior<T> sınıfından Behavior türetilerek oluşturulur.

.NET MAUI davranışı oluşturma işlemi aşağıdaki gibidir:

  1. veya Behavior<T> sınıfından Behavior devralan bir sınıf oluşturun; buradaT, davranışın uygulanacağı denetimin türüdür.
  2. OnAttachedTo Gerekli kurulumu gerçekleştirmek için yöntemini geçersiz kılın.
  3. OnDetachingFrom Gerekli temizleme işlemlerini gerçekleştirmek için yöntemini geçersiz kılın.
  4. Davranışın temel işlevselliğini uygulayın.

Bu, aşağıdaki örnekte gösterilen yapıya neden olur:

public class MyBehavior : Behavior<View>
{
    protected override void OnAttachedTo(View bindable)
    {
        base.OnAttachedTo(bindable);
        // Perform setup
    }

    protected override void OnDetachingFrom(View bindable)
    {
        base.OnDetachingFrom(bindable);
        // Perform clean up
    }

    // Behavior implementation
}

yöntemi OnAttachedTo , davranış bir denetime eklendikten hemen sonra çağrılır. Bu yöntem, eklendiği denetime bir başvuru alır ve olay işleyicilerini kaydetmek veya davranış işlevselliğini desteklemek için gereken diğer kurulumu gerçekleştirmek için kullanılabilir. Örneğin, bir denetimdeki bir olaya abone olabilirsiniz. Daha sonra davranış işlevi, olay için olay işleyicisinde uygulanır.

OnDetachingFrom Davranış denetimden kaldırıldığında yöntemi çağrılır. Bu yöntem, eklendiği denetime bir başvuru alır ve gerekli temizleme işlemlerini gerçekleştirmek için kullanılır. Örneğin, bellek sızıntılarını önlemek için denetimdeki bir olayın aboneliğini kaldırabilirsiniz.

Daha sonra davranış, denetimin koleksiyonuna Behaviors eklenerek kullanılabilir.

.NET MAUI Davranışı Oluşturma

.NET MAUI davranışı, veya sınıfından Behavior türetilen bir sınıf oluşturulup ve OnDetachingFrom yöntemleri geçersiz kılınarak OnAttachedToBehavior<T> uygulanabilir.

Aşağıdaki örnekte, kullanıcı tarafından kırmızı renkli bir Entry denetime doublegirilen değeri vurgulayan sınıfı gösterilmektedir NumericValidationBehavior .

public class NumericValidationBehavior : Behavior<Entry>
{
    protected override void OnAttachedTo(Entry entry)
    {
        entry.TextChanged += OnEntryTextChanged;
        base.OnAttachedTo(entry);
    }

    protected override void OnDetachingFrom(Entry entry)
    {
        entry.TextChanged -= OnEntryTextChanged;
        base.OnDetachingFrom(entry);
    }

    void OnEntryTextChanged(object sender, TextChangedEventArgs args)
    {
        double result;
        bool isValid = double.TryParse(args.NewTextValue, out result);
        ((Entry)sender).TextColor = isValid ? Colors.Black : Colors.Red;
    }
}

Bu örnekte, NumericValidationBehavior sınıfı sınıfından Behavior<T> türetilir ve burada T bir Entry. OnAttachedTo yöntemi, bellek sızıntılarını önlemek için olayı kaydını TextChanged kaldırma yöntemiyle OnDetachingFrom olay için TextChanged bir olay işleyicisi kaydeder. Davranışın temel işlevselliği yöntemi tarafından OnEntryTextChanged sağlanır. Bu yöntem, içine girilen Entry değeri ayrıştırıp değer değilse doubleözelliğini kırmızı olarak ayarlarTextColor.

Önemli

.NET MAUI bir davranışı ayarlamaz BindingContext , çünkü davranışlar paylaşılabilir ve stiller aracılığıyla birden çok denetime uygulanabilir.

.NET MAUI davranışını kullanma

Her .NET MAUI denetiminin bir Behaviors koleksiyonu vardır ve bu koleksiyona bir veya daha fazla davranış eklenebilir:

<Entry Placeholder="Enter a System.Double">
    <Entry.Behaviors>
        <local:NumericValidationBehavior />
    </Entry.Behaviors>
</Entry>

C# ile eşdeğeri Entry aşağıdaki kod örneğinde gösterilmiştir:

Entry entry = new Entry { Placeholder = "Enter a System.Double" };
entry.Behaviors.Add(new NumericValidationBehavior());

Aşağıdaki ekran görüntüsünde geçersiz girişe yanıt veren .NET MAUI davranışı gösterilmektedir:

Screenshot of .NET MAUI behavior responding to invalid input

Uyarı

.NET MAUI davranışları belirli bir denetim türü (veya birçok denetime uygulanabilen bir üst sınıf) için yazılır ve yalnızca uyumlu bir denetime eklenmelidir. Uyumsuz bir denetime .NET MAUI davranışı eklemeye çalışmak özel durum oluşturmayla sonuçlanır.

Stille .NET MAUI davranışı kullanma

.NET MAUI davranışları açık veya örtük bir stil tarafından kullanılabilir. Ancak, özelliği salt okunur olduğundan denetimin özelliğini ayarlayan Behaviors bir stil oluşturmak mümkün değildir. Çözüm, davranışın eklenmesini ve kaldırılmasını denetleen davranış sınıfına ekli bir özellik eklemektir. Süreç şu şekilde ilerler:

  1. Davranışın ekleneceği denetime eklenmesini veya kaldırılmasını denetlemek için kullanılacak davranış sınıfına ekli bir özellik ekleyin. Ekli özelliğin, özelliğin değeri değiştiğinde yürütülecek bir propertyChanged temsilciyi kaydettiğinizden emin olun.
  2. Ekli özellik için bir static alıcı ve ayarlayıcı oluşturun.
  3. Davranışı eklemek ve kaldırmak için temsilciye mantık propertyChanged uygulayın.

Aşağıdaki örnekte, davranışın eklenmesini ve kaldırılmasını NumericValidationStyleBehavior denetleyen ekli bir özelliği olan sınıfı gösterilmektedir:

public class NumericValidationStyleBehavior : Behavior<Entry>
{
    public static readonly BindableProperty AttachBehaviorProperty =
        BindableProperty.CreateAttached("AttachBehavior", typeof(bool), typeof(NumericValidationStyleBehavior), false, propertyChanged: OnAttachBehaviorChanged);

    public static bool GetAttachBehavior(BindableObject view)
    {
        return (bool)view.GetValue(AttachBehaviorProperty);
    }

    public static void SetAttachBehavior(BindableObject view, bool value)
    {
        view.SetValue(AttachBehaviorProperty, value);
    }

    static void OnAttachBehaviorChanged(BindableObject view, object oldValue, object newValue)
    {
        Entry entry = view as Entry;
        if (entry == null)
        {
            return;
        }

        bool attachBehavior = (bool)newValue;
        if (attachBehavior)
        {
            entry.Behaviors.Add(new NumericValidationStyleBehavior());
        }
        else
        {
            Behavior toRemove = entry.Behaviors.FirstOrDefault(b => b is NumericValidationStyleBehavior);
            if (toRemove != null)
            {
                entry.Behaviors.Remove(toRemove);
            }
        }
    }

    protected override void OnAttachedTo(Entry entry)
    {
        entry.TextChanged += OnEntryTextChanged;
        base.OnAttachedTo(entry);
    }

    protected override void OnDetachingFrom(Entry entry)
    {
        entry.TextChanged -= OnEntryTextChanged;
        base.OnDetachingFrom(entry);
    }

    void OnEntryTextChanged(object sender, TextChangedEventArgs args)
    {
        double result;
        bool isValid = double.TryParse(args.NewTextValue, out result);
        ((Entry)sender).TextColor = isValid ? Colors.Black : Colors.Red;
    }
}

Bu örnekte, sınıfı, NumericValidationStyleBehavior eklendiği denetime davranışın eklenmesini veya kaldırılmasını denetleyen bir static alıcı ve ayarlayıcı ile adlı AttachBehavior bir ekli özellik içerir. Bu ekli özellik, özelliğin OnAttachBehaviorChanged değeri değiştiğinde yürütülecek yöntemi kaydeder. Bu yöntem, ekli özelliğin değerine AttachBehavior göre denetimin davranışını ekler veya kaldırır.

Aşağıdaki kod örneği, ekli özelliği kullanan AttachBehavior ve denetimlere Entry uygulanabilen için açık bir stil NumericValidationStyleBehavior gösterir:

<Style x:Key="NumericValidationStyle" TargetType="Entry">
    <Style.Setters>
        <Setter Property="local:NumericValidationStyleBehavior.AttachBehavior" Value="true" />
    </Style.Setters>
</Style>

, Style işaretleme uzantısı kullanılarak özelliğini stile ayarlayarak Style bir'e EntryStaticResource uygulanabilir:

<Entry Placeholder="Enter a System.Double" Style="{StaticResource NumericValidationStyle}">

Stiller hakkında daha fazla bilgi için bkz . Stiller.

Dekont

XAML'de ayarlanan veya sorgulanan bir davranışa bağlanabilir özellikler ekleyebilirsiniz, ancak bir içindeki denetimler StyleResourceDictionaryarasında paylaşılmaması gereken durumlarına sahip davranışlar oluşturursanız.

.NET MAUI davranışını kaldırma

Bir OnDetachingFrom davranış bir denetimden kaldırıldığında yöntemi çağrılır ve bellek sızıntısını önlemek için bir olaydan aboneliği kaldırma gibi gerekli temizleme işlemlerini gerçekleştirmek için kullanılır. Ancak, denetimin koleksiyonu veya Clear yöntemi tarafından Remove değiştirilmediği sürece davranışlar denetimlerden Behaviors örtük olarak kaldırılmaz:

Behavior toRemove = entry.Behaviors.FirstOrDefault(b => b is NumericValidationStyleBehavior);
if (toRemove != null)
{
    entry.Behaviors.Remove(toRemove);
}

Alternatif olarak, denetimin Behaviors koleksiyonu temizlenebilir:

entry.Behaviors.Clear();

Dekont

Sayfalar gezinti yığınından çıkarıldığında .NET MAUI davranışları denetimlerden örtük olarak kaldırılmaz. Bunun yerine, sayfalar kapsam dışına çıkmadan önce açıkça kaldırılmalıdır.

Platform davranışları

Platform davranışları, veya PlatformBehavior<TView,TPlatformView> sınıfından PlatformBehavior<TView> türetilerek oluşturulur. Yerel denetimdeki rastgele koşullara ve olaylara yanıt verir.

Platform davranışı koşullu derleme veya kısmi sınıflar aracılığıyla uygulanabilir. Burada benimsenen yaklaşım, bir platform davranışının genellikle davranışLAR API'sini tanımlayan bir platformlar arası kısmi sınıftan ve davranışı her platformda uygulayan yerel bir kısmi sınıftan oluştuğu kısmi sınıfları kullanmaktır. Derleme zamanında çoklu hedefleme, her platformda platform davranışını oluşturmak için kısmi sınıfları birleştirir.

Platform davranışı oluşturma işlemi aşağıdaki gibidir:

  1. Platform davranışı için API'yi tanımlayan bir platformlar arası kısmi sınıf oluşturun.

  2. Uygulamanızın oluşturulduğu her platformda platformlar arası kısmi sınıfla aynı ada sahip yerel bir kısmi sınıf oluşturun. Bu yerel kısmi sınıf veya PlatformBehavior<TView,TPlatformView> sınıfından PlatformBehavior<TView> devralmalıdır; burada TView davranışın geçerli olması gereken platformlar arası denetimdir ve TPlatformView belirli bir platformda platformlar arası denetimi uygulayan yerel görünümdür.

    Dekont

    Uygulamanızın oluşturulduğu her platformda yerel bir kısmi sınıf oluşturmak gerekli olsa da, platform davranışı işlevselliğini her platformda uygulamak gerekmez. Örneğin, bazı platformlarda yerel denetimin kenarlık kalınlığını değiştiren ancak tümü olmayan bir platform davranışı oluşturabilirsiniz.

  3. Platform davranışını uygulamak için gereken her yerel kısmi sınıfta şunları yapmalısınız:

    1. OnAttachedTo Herhangi bir kurulum gerçekleştirmek için yöntemini geçersiz kılın.
    2. OnDetachedFrom Herhangi bir temizleme gerçekleştirmek için yöntemini geçersiz kılın.
    3. Platform davranışının temel işlevselliğini uygulayın.

Daha sonra davranış, denetimin koleksiyonuna Behaviors eklenerek kullanılabilir.

Platform davranışı oluşturma

Platform davranışı oluşturmak için önce platform davranışı için API'yi tanımlayan bir platformlar arası kısmi sınıf oluşturmanız gerekir:

namespace BehaviorsDemos
{
    public partial class TintColorBehavior
    {
        public static readonly BindableProperty TintColorProperty =
            BindableProperty.Create(nameof(TintColor), typeof(Color), typeof(TintColorBehavior));

        public Color TintColor
        {
            get => (Color)GetValue(TintColorProperty);
            set => SetValue(TintColorProperty, value);
        }
    }
}

Platform davranışı, uygulaması aynı adı kullanan ek bir kısmi sınıfla gerekli her platformda tamamlanacak olan kısmi bir sınıftır. Bu örnekte sınıfı, TintColorBehavior bir görüntüyü belirtilen renkle renklendirecek tek bir bağlanabilir özellik TintColortanımlar.

Platformlar arası kısmi sınıfı oluşturduktan sonra, uygulamayı oluşturduğunuz her platformda yerel bir kısmi sınıf oluşturmanız gerekir. Bu, Platformlar klasörünün gerekli alt klasörlerine kısmi sınıflar ekleyerek gerçekleştirilebilir:

Screenshot of the native partial classes for a platform behavior.

Alternatif olarak projenizi dosya adı tabanlı çoklu hedeflemeyi veya klasör tabanlı çoklu hedeflemeyi ya da her ikisini de destekleyecek şekilde yapılandırabilirsiniz. Çoklu hedefleme hakkında daha fazla bilgi için bkz . Çoklu hedeflemeyi yapılandırma.

Yerel kısmi sınıflar sınıfından PlatformBehavior<TView> veya sınıfından PlatformBehavior<TView,TPlatformView> devralmalıdır; burada TView davranışın geçerli olması gereken platformlar arası denetimdir ve TPlatformView belirli bir platformda platformlar arası denetimi uygulayan yerel görünümdür. Platform davranışını uygulamak için gereken her yerel kısmi sınıfta yöntemini ve OnDetachedFrom yöntemini geçersiz kılmanız OnAttachedTo ve platform davranışının temel işlevselliğini uygulamanız gerekir.

Yöntem, OnAttachedTo platform davranışı platformlar arası denetime eklendikten hemen sonra çağrılır. yöntemi, bağlı olduğu platformlar arası denetime bir başvuru ve isteğe bağlı olarak platformlar arası denetimi uygulayan yerel denetime başvuru alır. yöntemi, olay işleyicilerini kaydetmek veya platform davranışı işlevselliğini desteklemek için gereken diğer ayarları gerçekleştirmek için kullanılabilir. Örneğin, bir denetimdeki bir olaya abone olabilirsiniz. Daha sonra davranış işlevi, olay için olay işleyicisinde uygulanır.

Davranış OnDetachedFrom platformlar arası denetimden kaldırıldığında yöntemi çağrılır. yöntemi, eklendiği denetime bir başvuru ve isteğe bağlı olarak platformlar arası denetimi uygulayan yerel denetime başvuru alır. yöntemi, gerekli temizleme işlemlerini gerçekleştirmek için kullanılmalıdır. Örneğin, bellek sızıntılarını önlemek için denetimdeki bir olayın aboneliğini kaldırabilirsiniz.

Önemli

Kısmi sınıfların aynı ad alanında bulunması ve aynı adları kullanması gerekir.

Aşağıdaki örnekte, android için belirli bir renge sahip bir görüntüye renk tonu veren kısmi sınıf gösterilmektedir TintColorBehavior :

using Android.Graphics;
using Android.Widget;
using Microsoft.Maui.Platform;
using Color = Microsoft.Maui.Graphics.Color;

namespace BehaviorsDemos
{
    public partial class TintColorBehavior : PlatformBehavior<Image, ImageView>
    {
        protected override void OnAttachedTo(Image bindable, ImageView platformView)
        {
            base.OnAttachedTo(bindable, platformView);

            if (bindable is null)
                return;
            if (TintColor is null)
                ClearColor(platformView);
            else
                ApplyColor(platformView, TintColor);
        }

        protected override void OnDetachedFrom(Image bindable, ImageView platformView)
        {
            base.OnDetachedFrom(bindable, platformView);

            if (bindable is null)
                return;
            ClearColor(platformView);
        }

        void ApplyColor(ImageView imageView, Color color)
        {
            imageView.SetColorFilter(new PorterDuffColorFilter(color.ToPlatform(), PorterDuff.Mode.SrcIn ?? throw new NullReferenceException()));
        }

        void ClearColor(ImageView imageView)
        {
            imageView.ClearColorFilter();
        }
    }
}

Bu örnekte, sınıfı sınıfından TintColorBehaviorPlatformBehavior<TView,TPlatformView> türetilir, burada TView ve ImageTPlatformView bir ImageView'dir. özelliği OnAttachedTo bir değere sahip olması koşuluyla görüntüye renk tonu TintColor rengini uygular. yöntemi, OnDetachedFrom görüntüden renk tonu rengini kaldırır.

Uygulamanızı oluşturduğunuz her platforma yerel bir kısmi sınıf eklenmelidir. Ancak, belirli bir platformda platform davranışı gerekli değilse yerel kısmi sınıf NO-OP yapabilirsiniz. Bu, boş bir sınıf sağlayarak elde edilebilir:

using Microsoft.UI.Xaml;

namespace BehaviorsDemos
{
    public partial class TintColorBehavior : PlatformBehavior<Image, FrameworkElement>
    {
        // NO-OP on Windows
    }
}

Önemli

.NET MAUI bir platform davranışını ayarlamaz BindingContext .

Platform davranışını kullanma

Her .NET MAUI denetiminin bir Behaviors koleksiyonu vardır ve bu koleksiyona bir veya daha fazla platform davranışı eklenebilir:

<Image Source="dotnet_bot.png"
       HeightRequest="200"
       HorizontalOptions="Center">
    <Image.Behaviors>
        <local:TintColorBehavior TintColor="Red" />
    </Image.Behaviors>
</Image>

C# ile eşdeğeri Image aşağıdaki örnekte gösterilmiştir:

Image image = new Image { Source = "dotnet_bot.png", HeightRequest = 200, HorizontalOptions = LayoutOptions.Center };
image.Behaviors.Add(new TintColorBehavior());

Aşağıdaki ekran görüntüsünde, bir görüntünün renk tonunu alan platform davranışı gösterilmektedir:

Screenshot of .NET MAUI platform behavior tinting an image.

Uyarı

Platform davranışları belirli bir denetim türü (veya birçok denetime uygulanabilen bir üst sınıf) için yazılır ve yalnızca uyumlu bir denetime eklenmelidir. Uyumsuz bir denetime platform davranışı eklemeye çalışmak özel durum oluşturmayla sonuçlanır.