Udostępnij za pośrednictwem


Zachowania

Browse sample. Przeglądanie przykładu

Zachowania interfejsu użytkownika aplikacji wieloplatformowej platformy .NET (.NET MAUI) umożliwiają dodawanie funkcji do kontrolek interfejsu użytkownika bez konieczności ich podklasy. Zamiast tego funkcjonalność jest implementowana w klasie zachowania i dołączona do kontrolki tak, jakby była częścią samej kontrolki.

Zachowania umożliwiają zaimplementowanie kodu, który zwykle trzeba by napisać jako kod w tle, ponieważ bezpośrednio wchodzi w interakcję z interfejsem API kontrolki w taki sposób, że może być zwięzłie dołączony do kontrolki i spakowany do ponownego użycia w więcej niż jednej aplikacji. Mogą one służyć do zapewnienia pełnego zakresu funkcji do kontrolek, takich jak:

  • Dodawanie modułu sprawdzania poprawności wiadomości e-mail do elementu Entry.
  • Tworzenie kontrolki klasyfikacji przy użyciu rozpoznawania gestów naciśnięcia.
  • Kontrolowanie animacji.

Program .NET MAUI obsługuje trzy różne typy zachowań:

Dołączone zachowania

Dołączone zachowania to klasy statyczne z co najmniej jedną dołączoną właściwością. Dołączona właściwość jest specjalnym typem właściwości możliwej do powiązania. Są one definiowane w jednej klasie, ale dołączone do innych obiektów i są rozpoznawalne w języku XAML jako atrybuty zawierające klasę i nazwę właściwości oddzieloną kropką. Aby uzyskać więcej informacji na temat dołączonych właściwości, zobacz Dołączone właściwości.

Dołączona właściwość może zdefiniować propertyChanged delegata, który zostanie wykonany, gdy wartość właściwości ulegnie zmianie, na przykład gdy właściwość jest ustawiona na kontrolce. Po wykonaniu propertyChanged delegata zostanie przekazane odwołanie do kontrolki, na której jest on dołączony, oraz parametry zawierające stare i nowe wartości właściwości. Ten delegat może służyć do dodawania nowych funkcji do kontrolki dołączonej do właściwości, manipulując odwołaniem przekazanym w następujący sposób:

  1. Delegat propertyChanged rzutuje odwołanie do kontrolki, które jest odbierane jako BindableObject, do typu kontrolki, który ma na celu ulepszenie zachowania.
  2. Delegat propertyChanged modyfikuje właściwości kontrolki, wywołuje metody kontrolki lub rejestruje programy obsługi zdarzeń dla zdarzeń uwidocznionych przez kontrolkę, aby zaimplementować podstawowe funkcje zachowania.

Ostrzeżenie

Dołączone zachowania są definiowane w static klasie z właściwościami i metodami static . Utrudnia to tworzenie dołączonych zachowań, które mają stan.

Tworzenie dołączonego zachowania

Dołączone zachowanie można zaimplementować, tworząc klasę statyczną zawierającą dołączoną właściwość określającą delegata propertyChanged .

W poniższym przykładzie pokazano klasę AttachedNumericValidationBehavior , która wyróżnia wartość wprowadzoną przez użytkownika w kontrolce Entry na czerwono, jeśli nie jest to double:

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;
    }
}

W tym przykładzie AttachedNumericValidationBehavior klasa zawiera dołączoną właściwość o nazwie AttachBehavior getter static i setter, która kontroluje dodanie lub usunięcie zachowania do kontrolki, do której zostanie dołączony. Ta dołączona właściwość rejestruje metodę OnAttachBehaviorChanged , która zostanie wykonana po zmianie wartości właściwości. Ta metoda rejestruje lub usuwa procedurę obsługi zdarzeń dla TextChanged zdarzenia na podstawie wartości dołączonej AttachBehavior właściwości. Podstawowa funkcjonalność zachowania jest udostępniana przez OnEntryTextChanged metodę , która analizuje wartość wprowadzoną w Entry obiekcie i ustawia TextColor właściwość na czerwoną, jeśli wartość nie jest wartością double.

Korzystanie z dołączonego zachowania

Dołączone zachowanie można użyć, ustawiając jego dołączoną właściwość w kontrolce docelowej.

W poniższym przykładzie pokazano użycie AttachedNumericValidationBehavior klasy na obiekcie Entry przez dodanie dołączonej AttachBehavior właściwości do klasy Entry:


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

Odpowiednik Entry w języku C# jest pokazany w poniższym przykładzie kodu:

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

Poniższy zrzut ekranu przedstawia dołączone zachowanie odpowiadające na nieprawidłowe dane wejściowe:

Screenshot of attached behavior responding to invalid input

Uwaga

Dołączone zachowania są zapisywane dla określonego typu kontrolki (lub superklasy, która może mieć zastosowanie do wielu kontrolek) i powinny być dodawane tylko do zgodnej kontrolki.

Usuwanie dołączonego zachowania

Klasę AttachedNumericValidationBehavior można usunąć z kontrolki, ustawiając dołączoną AttachBehavior właściwość na false:

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

W czasie wykonywania metoda zostanie wykonana, OnAttachBehaviorChanged gdy wartość dołączonej AttachBehavior właściwości zostanie ustawiona na falsewartość . OnAttachBehaviorChanged Następnie metoda spowoduje anulowanie rejestracji programu obsługi zdarzeń dla TextChanged zdarzenia, zapewniając, że zachowanie nie jest wykonywane podczas interakcji z kontrolką.

Zachowania interfejsu MAUI platformy .NET

Zachowania interfejsu Behavior MAUI platformy .NET są tworzone przez wyprowadzanie z klasy or Behavior<T> .

Proces tworzenia zachowania programu MAUI platformy .NET jest następujący:

  1. Utwórz klasę dziedziczą po Behavior klasie or Behavior<T> , gdzie T jest typem kontrolki, do której należy zastosować zachowanie.
  2. Zastąpij metodę , aby wykonać dowolną wymaganą OnAttachedTo konfigurację.
  3. Zastąpij metodę w celu wykonania dowolnego wymaganego OnDetachingFrom czyszczenia.
  4. Zaimplementuj podstawowe funkcje zachowania.

Spowoduje to wyświetlenie struktury pokazanej w poniższym przykładzie:

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
}

Metoda jest wywoływana OnAttachedTo natychmiast po dołączeniu zachowania do kontrolki. Ta metoda odbiera odwołanie do kontrolki, do której jest dołączona, i może służyć do rejestrowania programów obsługi zdarzeń lub wykonywania innej konfiguracji wymaganej do obsługi funkcji zachowania. Możesz na przykład zasubskrybować zdarzenie w kontrolce. Funkcjonalność zachowania zostanie następnie zaimplementowana w procedurze obsługi zdarzeń dla zdarzenia.

Metoda jest wywoływana OnDetachingFrom po usunięciu zachowania z kontrolki. Ta metoda odbiera odwołanie do kontrolki, do której jest dołączona, i jest używana do wykonania dowolnego wymaganego czyszczenia. Możesz na przykład anulować subskrypcję zdarzenia w kontrolce, aby zapobiec wyciekom pamięci.

Zachowanie można następnie użyć, dołączając je do Behaviors kolekcji kontrolki.

Tworzenie zachowania maUI platformy .NET

Zachowanie programu MAUI platformy .NET można zaimplementować, tworząc klasę pochodzącą z Behavior klasy lub Behavior<T> i zastępując OnAttachedTo metody i OnDetachingFrom .

W poniższym przykładzie pokazano klasę NumericValidationBehavior , która wyróżnia wartość wprowadzoną przez użytkownika w kontrolce Entry na czerwono, jeśli nie jest to double:

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;
    }
}

W tym przykładzie NumericValidationBehaviorBehavior<T> klasa pochodzi z klasy , gdzie T jest .Entry Metoda OnAttachedTo rejestruje program obsługi zdarzeń dla TextChanged zdarzenia, przy OnDetachingFrom użyciu metody anulowania rejestrowania TextChanged zdarzenia, aby zapobiec wyciekom pamięci. Podstawowa funkcjonalność zachowania jest udostępniana przez OnEntryTextChanged metodę , która analizuje wartość wprowadzoną w Entry obiekcie i ustawia TextColor właściwość na czerwoną, jeśli wartość nie jest wartością double.

Ważne

Program .NET MAUI nie ustawia BindingContext zachowania, ponieważ zachowania mogą być współużytkowane i stosowane do wielu kontrolek za pomocą stylów.

Korzystanie z zachowania programu MAUI platformy .NET

Każda kontrolka MAUI platformy .NET ma Behaviors kolekcję, do której można dodać jedno lub więcej zachowań:

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

Odpowiednik Entry w języku C# jest pokazany w poniższym przykładzie kodu:

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

Poniższy zrzut ekranu przedstawia zachowanie programu .NET MAUI odpowiadające na nieprawidłowe dane wejściowe:

Screenshot of .NET MAUI behavior responding to invalid input

Ostrzeżenie

Zachowania maUI platformy .NET są zapisywane dla określonego typu kontrolki (lub superklasy, która może mieć zastosowanie do wielu kontrolek) i powinny być dodawane tylko do zgodnej kontrolki. Próba dołączenia zachowania programu MAUI platformy .NET do niezgodnej kontrolki spowoduje zgłoszenie wyjątku.

Korzystanie z zachowania programu MAUI platformy .NET ze stylem

Zachowania interfejsu MAUI platformy .NET mogą być używane przez jawny lub niejawny styl. Jednak utworzenie stylu, który ustawia Behaviors właściwość kontrolki, nie jest możliwe, ponieważ właściwość jest tylko do odczytu. Rozwiązaniem jest dodanie dołączonej właściwości do klasy zachowania, która kontroluje dodawanie i usuwanie zachowania. Przebieg procesu:

  1. Dodaj dołączoną właściwość do klasy zachowania, która będzie używana do kontrolowania dodawania lub usuwania zachowania do kontrolki, do której będzie dołączone zachowanie. Upewnij się, że dołączona właściwość rejestruje propertyChanged delegata, który zostanie wykonany po zmianie wartości właściwości.
  2. Utwórz element pobierający static i ustawiany dla dołączonej właściwości.
  3. Zaimplementuj logikę w delegatzie, propertyChanged aby dodać i usunąć zachowanie.

W poniższym przykładzie przedstawiono klasę NumericValidationStyleBehavior , która ma dołączoną właściwość, która kontroluje dodawanie i usuwanie zachowania:

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;
    }
}

W tym przykładzie NumericValidationStyleBehavior klasa zawiera dołączoną właściwość o nazwie AttachBehavior getter static i setter, która kontroluje dodanie lub usunięcie zachowania do kontrolki, do której zostanie dołączony. Ta dołączona właściwość rejestruje metodę OnAttachBehaviorChanged , która zostanie wykonana po zmianie wartości właściwości. Ta metoda dodaje lub usuwa zachowanie kontrolki na podstawie wartości dołączonej AttachBehavior właściwości.

Poniższy przykład kodu przedstawia jawny styl dla NumericValidationStyleBehavior elementu, który używa dołączonej AttachBehavior właściwości i który można zastosować do Entry kontrolek:

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

Właściwość Style można zastosować do obiektu Entry , ustawiając jej Style właściwość na styl przy użyciu StaticResource rozszerzenia znaczników:

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

Aby uzyskać więcej informacji na temat stylów, zobacz Style.

Uwaga

Chociaż można dodać właściwości możliwe do powiązania z zachowaniem ustawionym lub zapytanym w języku XAML, jeśli utworzysz zachowania, które mają stan, nie powinny być współużytkowane między kontrolkami w obiekcie w Style obiekcie ResourceDictionary.

Usuwanie zachowania programu MAUI platformy .NET

Metoda OnDetachingFrom jest wywoływana, gdy zachowanie jest usuwane z kontrolki i służy do przeprowadzania dowolnego wymaganego czyszczenia, takiego jak anulowanie subskrypcji zdarzenia, aby zapobiec wyciekowi pamięci. Jednak zachowania nie są niejawnie usuwane z kontrolek, chyba że kolekcja kontrolki Behaviors zostanie zmodyfikowana przez metodę Remove lub Clear :

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

Możesz też wyczyścić kolekcję kontrolki Behaviors :

entry.Behaviors.Clear();

Uwaga

Zachowania interfejsu MAUI platformy .NET nie są niejawnie usuwane z kontrolek, gdy strony są zwinięte ze stosu nawigacji. Zamiast tego należy je jawnie usunąć przed wyjściem stron z zakresu.

Zachowania platformy

Zachowania platformy są tworzone przez wyprowadzanie z PlatformBehavior<TView> klasy or PlatformBehavior<TView,TPlatformView> . Reagują na dowolne warunki i zdarzenia w natywnej kontrolce.

Zachowanie platformy można zaimplementować za pomocą kompilacji warunkowej lub klas częściowych. Podejście przyjęte tutaj polega na użyciu klas częściowych, w których zachowanie platformy zwykle składa się z klasy częściowej międzyplatformowej, która definiuje interfejs API zachowania, oraz natywną klasę częściową, która implementuje zachowanie na każdej platformie. W czasie kompilacji wielowersyjność łączy klasy częściowe w celu utworzenia zachowania platformy na każdej platformie.

Proces tworzenia zachowania platformy jest następujący:

  1. Utwórz międzyplatformową klasę częściową, która definiuje interfejs API dla zachowania platformy.

  2. Utwórz natywną klasę częściową na każdej platformie, dla których jest tworzona aplikacja, która ma taką samą nazwę jak klasa częściowa międzyplatformowa. Ta natywna klasa częściowa powinna dziedziczyć z PlatformBehavior<TView> klasy or PlatformBehavior<TView,TPlatformView> , gdzie TView jest kontrolką międzyplatformową, do której należy zastosować zachowanie, i TPlatformView jest widokiem natywnym, który implementuje kontrolę międzyplatformową na określonej platformie.

    Uwaga

    Chociaż jest to wymagane do utworzenia natywnej klasy częściowej na każdej platformie tworzonej przez aplikację, nie jest wymagane zaimplementowanie funkcji zachowania platformy na każdej platformie. Możesz na przykład utworzyć zachowanie platformy, które modyfikuje grubość obramowania natywnej kontrolki na niektórych, ale nie wszystkich platformach.

  3. W każdej natywnej klasie częściowej wymaganej do zaimplementowania zachowania platformy należy:

    1. Zastąpi metodę , aby wykonać dowolną OnAttachedTo konfigurację.
    2. Zastąpij metodę OnDetachedFrom w celu wykonania dowolnego czyszczenia.
    3. Zaimplementuj podstawowe funkcje zachowania platformy.

Zachowanie można następnie użyć, dołączając je do Behaviors kolekcji kontrolki.

Tworzenie zachowania platformy

Aby utworzyć zachowanie platformy, należy najpierw utworzyć międzyplatformową klasę częściową, która definiuje interfejs API dla zachowania platformy:

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);
        }
    }
}

Zachowanie platformy to klasa częściowa, której implementacja zostanie ukończona na każdej wymaganej platformie z dodatkową klasą częściową, która używa tej samej nazwy. W tym przykładzie TintColorBehavior klasa definiuje pojedynczą powiązaną właściwość , TintColorktóra będzie przyciemniać obraz o określonym kolorze.

Po utworzeniu klasy częściowej międzyplatformowej należy utworzyć natywną klasę częściową na każdej platformie, dla której utworzysz aplikację. Można to zrobić, dodając klasy częściowe do wymaganych folderów podrzędnych folderu Platformy :

Screenshot of the native partial classes for a platform behavior.

Możesz też skonfigurować projekt tak, aby obsługiwał wielowersyjność nazw plików lub wielowersyjność opartą na folderach lub oba te elementy. Aby uzyskać więcej informacji na temat wielowersyjność, zobacz Konfigurowanie wielowersyjność.

Natywne klasy częściowe powinny dziedziczyć z PlatformBehavior<TView> klasy lub PlatformBehavior<TView,TPlatformView> klasy, gdzie TView jest kontrolką międzyplatformową, do której należy zastosować zachowanie, i TPlatformView jest natywnym widokiem, który implementuje kontrolkę międzyplatformową na określonej platformie. W każdej natywnej klasie częściowej wymaganej do zaimplementowania zachowania platformy należy zastąpić OnAttachedTo metodę i OnDetachedFrom metodę oraz zaimplementować podstawowe funkcje zachowania platformy.

Metoda OnAttachedTo jest wywoływana natychmiast po dołączeniu zachowania platformy do kontrolki międzyplatformowej. Metoda odbiera odwołanie do kontrolki międzyplatformowej, do której jest dołączona, i opcjonalnie odwołanie do kontrolki natywnej, która implementuje kontrolkę międzyplatformową. Metoda może służyć do rejestrowania procedur obsługi zdarzeń lub wykonywania innej konfiguracji wymaganej do obsługi funkcji zachowania platformy. Możesz na przykład zasubskrybować zdarzenie w kontrolce. Funkcjonalność zachowania zostanie następnie zaimplementowana w procedurze obsługi zdarzeń dla zdarzenia.

Metoda jest wywoływana OnDetachedFrom po usunięciu zachowania z kontrolki międzyplatformowej. Metoda odbiera odwołanie do kontrolki, do której jest dołączona, i opcjonalnie odwołanie do kontrolki natywnej, która implementuje kontrolkę międzyplatformową. Metoda powinna służyć do wykonania dowolnego wymaganego czyszczenia. Możesz na przykład anulować subskrypcję zdarzenia w kontrolce, aby zapobiec wyciekom pamięci.

Ważne

Klasy częściowe muszą znajdować się w tej samej przestrzeni nazw i używać identycznych nazw.

W poniższym przykładzie przedstawiono klasę TintColorBehavior częściową dla systemu Android, która przyciemnia obraz o określonym kolorze:

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();
        }
    }
}

W tym przykładzie TintColorBehaviorPlatformBehavior<TView,TPlatformView> klasa pochodzi z klasy , gdzie TView jest elementem Image i TPlatformView jest .ImageView Właściwość OnAttachedTo stosuje kolor odcienia do obrazu, pod warunkiem, że TintColor właściwość ma wartość. Metoda OnDetachedFrom usuwa kolor odcienia z obrazu.

Na każdej platformie, dla której tworzysz aplikację, należy dodać natywną klasę częściową. Można jednak ustawić natywną klasę częściową NO-OP, jeśli zachowanie platformy nie jest wymagane na określonej platformie. Można to osiągnąć, zapewniając pustą klasę:

using Microsoft.UI.Xaml;

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

Ważne

Program .NET MAUI nie ustawia BindingContext zachowania platformy.

Korzystanie z zachowania platformy

Każda kontrolka Behaviors MAUI platformy .NET ma kolekcję, do której można dodać jedno lub więcej zachowań platformy:

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

Odpowiednik Image w języku C# jest pokazany w poniższym przykładzie:

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

Poniższy zrzut ekranu przedstawia zachowanie platformy przyciemnianie obrazu:

Screenshot of .NET MAUI platform behavior tinting an image.

Ostrzeżenie

Zachowania platformy są zapisywane dla określonego typu kontrolki (lub superklasy, która może mieć zastosowanie do wielu kontrolek) i powinny być dodawane tylko do zgodnej kontrolki. Próba dołączenia zachowania platformy do niezgodnej kontrolki spowoduje zgłoszenie wyjątku.