Zachowania
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 to
static
klasy z co najmniej jedną dołączoną właściwością. Aby uzyskać więcej informacji na temat dołączonych zachowań, zobacz Dołączone zachowania. - Zachowania maUI platformy .NET to klasy pochodzące z Behavior klasy lub Behavior<T> , gdzie
T
jest typem kontrolki, do której należy zastosować zachowanie. Aby uzyskać więcej informacji, zobacz .NET MAUI Behaviors (Zachowania maUI platformy .NET). - Zachowania platformy to klasy pochodzące z PlatformBehavior<TView> klasy lub PlatformBehavior<TView,TPlatformView> . Te zachowania mogą reagować na dowolne warunki i zdarzenia w natywnej kontrolce. Aby uzyskać więcej informacji, zobacz Zachowania platformy.
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:
- Delegat
propertyChanged
rzutuje odwołanie do kontrolki, które jest odbierane jako BindableObject, do typu kontrolki, który ma na celu ulepszenie zachowania. - 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:
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 false
wartość . 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:
- Utwórz klasę dziedziczą po Behavior klasie or Behavior<T> , gdzie
T
jest typem kontrolki, do której należy zastosować zachowanie. - Zastąpij metodę , aby wykonać dowolną wymaganą OnAttachedTo konfigurację.
- Zastąpij metodę w celu wykonania dowolnego wymaganego OnDetachingFrom czyszczenia.
- 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 NumericValidationBehavior
Behavior<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:
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:
- 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. - Utwórz element pobierający
static
i ustawiany dla dołączonej właściwości. - 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:
Utwórz międzyplatformową klasę częściową, która definiuje interfejs API dla zachowania platformy.
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, iTPlatformView
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.
W każdej natywnej klasie częściowej wymaganej do zaimplementowania zachowania platformy należy:
- Zastąpi metodę , aby wykonać dowolną OnAttachedTo konfigurację.
- Zastąpij metodę OnDetachedFrom w celu wykonania dowolnego czyszczenia.
- 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ść , TintColor
któ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 :
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 TintColorBehavior
PlatformBehavior<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:
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.