Zachowania
Zachowania .NET MAUI umożliwiają dodawanie dodatkowej funkcjonalności do kontrolek interfejsu użytkownika, takich jak Button lub Entry, bez konieczności tworzenia podklas tych kontrolek. Zamiast tego dodatkowe funkcje są implementowane w klasie Behavior i dołączone do kontrolki.
Zachowania mogą służyć do dodawania różnych funkcji do kontrolek interfejsu użytkownika, takich jak:
- Walidacje danych wejściowych. Zachowania mogą być używane z kontrolkami wejściowymi, aby upewnić się, że dane są prawidłowe. Na przykład można napisać zachowanie dla Entry, aby upewnić się, że numer telefonu lub adres e-mail jest w poprawnym formacie.
- Ulepszanie interfejsu użytkownika. Zachowania mogą służyć do ulepszania kontrolek interfejsu użytkownika w aplikacji. Na przykład możesz napisać zachowanie dla Button tak, aby zaczęło się trząść po kliknięciu, lub zmieniło kolor.
- Odpowiedzi środowiska uruchomieniowego. Zachowania mogą służyć do reagowania kontrolek na różne sytuacje. Możesz na przykład automatycznie zapisywać dane wejściowe użytkownika w Entry po zakończeniu wpisywania przez użytkownika.
Program .NET MAUI obsługuje trzy różne typy zachowań:
- Dołączone zachowania to klasy
static
posiadające co najmniej jedną dołączoną właściwość. Aby uzyskać więcej informacji na temat dołączonych zachowań, zobacz Zachowania dołączone. - Zachowania programu MAUI platformy .NET to klasy pochodzące z klasy Behavior 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 platformy to klasy pochodzące z klasy PlatformBehavior<TView> 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ć delegata propertyChanged
, który zostanie wykonany, gdy wartość właściwości się zmieni, na przykład w momencie ustawienia właściwości na kontrolce. W momencie wykonywania delegata propertyChanged
jest przekazywana referencja do kontrolki, do której jest dołączany, 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 klasie static
z właściwościami i metodami static
. Utrudnia to tworzenie dołączonych zachowań, które mają stan.
Tworzenie dołączonego zachowania
Aby zaimplementować dołączone zachowanie, można stworzyć klasę statyczną, która zawiera dołączoną właściwość określającą delegata propertyChanged
.
Poniższy przykład przedstawia 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 klasa AttachedNumericValidationBehavior
zawiera dołączoną właściwość o nazwie AttachBehavior
z metodami udostępniania i ustawiania static
, które kontrolują dodanie lub usunięcie zachowania z kontrolki, do której zostanie ona dołączona. 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 zdarzenia TextChanged
na podstawie wartości dołączonej właściwości AttachBehavior
. Podstawowe funkcje zachowania są udostępniane przez metodę OnEntryTextChanged
, która analizuje wartość wprowadzoną w Entry i ustawia właściwość TextColor
na czerwoną, jeśli wartość nie jest double
.
Wykorzystaj dołączone zachowanie
Dołączone zachowanie można zastosować, ustawiając jego dołączoną właściwość na kontrolce docelowej.
W poniższym przykładzie pokazano użycie klasy AttachedNumericValidationBehavior
na Entry przez dodanie właściwości AttachBehavior
dołączonej do Entry:
<ContentPage ...
xmlns:local="clr-namespace:BehaviorsDemos">
<Entry Placeholder="Enter a System.Double" local:AttachedNumericValidationBehavior.AttachBehavior="true" />
</ContentPage>
Równoważne Entry w języku C# przedstawiono 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:
Notatka
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.
Usuń dołączone zachowanie
Klasę AttachedNumericValidationBehavior
można usunąć z kontrolki, ustawiając właściwość AttachBehavior
dołączoną do false
:
<Entry Placeholder="Enter a System.Double" local:AttachedNumericValidationBehavior.AttachBehavior="false" />
W czasie wykonywania metoda OnAttachBehaviorChanged
zostanie wykonana, gdy wartość dołączonej właściwości AttachBehavior
zostanie ustawiona na false
. Metoda OnAttachBehaviorChanged
następnie derejestruje program obsługi zdarzeń dla zdarzenia TextChanged
, upewniając się, że zachowanie nie jest wykonywane podczas interakcji z kontrolką.
Zachowania MAUI platformy .NET
Zachowania .NET MAUI są tworzone przez dziedziczenie z klasy Behavior lub Behavior<T>.
Proces tworzenia zachowania .NET MAUI jest następujący:
- Utwórz klasę dziedziczą z klasy Behavior lub Behavior<T>, gdzie
T
jest typem kontrolki, do której należy zastosować zachowanie. - Zastąpi metodę OnAttachedTo, aby wykonać dowolną wymaganą konfigurację.
- Zastąpi metodę OnDetachingFrom w celu wykonania dowolnego wymaganego 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 OnAttachedTo jest wywoływana 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 komponencie sterującym. Funkcjonalność zachowania zostanie następnie zaimplementowana w procedurze obsługi zdarzeń dla zdarzenia.
Metoda OnDetachingFrom jest wywoływana, gdy zachowanie jest usuwane z kontrolki. Ta metoda otrzymuje odwołanie do kontrolki, do której jest dołączona, i jest używana do wykonania wszelkich niezbędnych czynności czyszczących. Możesz na przykład anulować subskrypcję zdarzenia w kontrolce, aby zapobiec wyciekom pamięci.
Zachowanie może zostać następnie użyte, dołączając je do kolekcji Behaviors kontrolki.
Tworzenie zachowania platformy .NET MAUI
Zachowanie .NET MAUI można zaimplementować przez utworzenie klasy dziedziczącej po klasie Behavior lub Behavior<T> oraz przesłonięcie metod OnAttachedTo i OnDetachingFrom.
Poniższy przykład przedstawia 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 klasa NumericValidationBehavior
pochodzi z klasy Behavior<T>, gdzie T
jest Entry. Metoda OnAttachedTo rejestruje program obsługi zdarzeń dla zdarzenia TextChanged
, a metoda OnDetachingFrom służy do wyrejestrowania zdarzenia TextChanged
, aby zapobiec wyciekom pamięci. Podstawowe funkcje zachowania są udostępniane przez metodę OnEntryTextChanged
, która analizuje wartość wprowadzoną w Entry i ustawia właściwość TextColor
na czerwoną, jeśli wartość nie jest double
.
Ważny
Program .NET MAUI nie ustawia BindingContext
zachowania, ponieważ zachowania mogą być współużytkowane i stosowane do wielu kontrolek za pośrednictwem stylów.
Korzystanie z zachowania programu MAUI platformy .NET
Każda kontrolka MAUI platformy .NET ma kolekcję Behaviors, do której można dodać co najmniej jedno zachowanie:
<Entry Placeholder="Enter a System.Double">
<Entry.Behaviors>
<local:NumericValidationBehavior />
</Entry.Behaviors>
</Entry>
Równoważne Entry w języku C# przedstawiono 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 .NET MAUI do niekompatybilnej kontrolki spowoduje wyrzucenie wyjątku.
Korzystanie z zachowania MAUI platformy .NET z użyciem stylu
Zachowania .NET MAUI można stosować za pomocą stylu jawnego lub niejawnego. Jednak utworzenie stylu ustawiające właściwość Behaviors 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. Proces jest następujący:
- 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 delegata
propertyChanged
, który zostanie wykonany po zmianie wartości właściwości. - Utwórz
static
getter i ustawić dla dołączonej właściwości. - Zaimplementuj logikę w delegowaniu
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 klasa NumericValidationStyleBehavior
zawiera przypisaną właściwość o nazwie AttachBehavior
z static
getterem i setterem, które kontrolują dodawanie lub usuwanie zachowania do kontrolki, z którą zostanie połączona. 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 właściwości AttachBehavior
.
Poniższy przykład kodu przedstawia jawny styl dla NumericValidationStyleBehavior
, który używa dołączonej właściwości AttachBehavior
i który można zastosować do kontrolek Entry:
<Style x:Key="NumericValidationStyle" TargetType="Entry">
<Style.Setters>
<Setter Property="local:NumericValidationStyleBehavior.AttachBehavior" Value="true" />
</Style.Setters>
</Style>
Style można zastosować do Entry, ustawiając jego/jej właściwość Style na styl przy użyciu rozszerzenia znaczników StaticResource
:
<Entry Placeholder="Enter a System.Double" Style="{StaticResource NumericValidationStyle}">
Aby uzyskać więcej informacji na temat stylów, zobacz Style.
Notatka
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 posiadają stan, nie powinny być współużytkowane między kontrolkami w Style w ResourceDictionary.
Usuwanie zachowania programu MAUI platformy .NET
Metoda OnDetachingFrom jest wywoływana, gdy zachowanie zostaje usunięte z elementu sterującego, i służy do wykonania niezbędnych operacji czyszczenia, takich jak wypisanie się z subskrypcji zdarzeń, aby zapobiec wyciekowi pamięci. Jednak zachowania nie są niejawnie usuwane z kontrolek, chyba że kolekcja Behaviors kontrolki zostanie zmodyfikowana przez metodę Remove
lub Clear
:
Behavior toRemove = entry.Behaviors.FirstOrDefault(b => b is NumericValidationStyleBehavior);
if (toRemove != null)
{
entry.Behaviors.Remove(toRemove);
}
Alternatywnie można wyczyścić kolekcję Behaviors kontrolki:
entry.Behaviors.Clear();
Notatka
Zachowania .NET MAUI nie są niejawnie usuwane z kontrolek, gdy strony są usunięte ze stosu nawigacji. Zamiast tego należy je jawnie usunąć przed wyjściem stron z zakresu.
Działania platformy
Zachowania platformy są tworzone przez wyprowadzanie z klasy PlatformBehavior<TView> lub 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 wielotargetowość łączy klasy częściowe, aby zbudować zachowanie dla każdej platformy.
Proces tworzenia zachowania platformy jest następujący:
Utwórz międzyplatformową klasę częściową, która definiuje interfejs API dla zachowania platformowego.
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 klasy PlatformBehavior<TView> lub PlatformBehavior<TView,TPlatformView>, gdzie
TView
jest międzyplatformową kontrolą, do której należy zastosować zachowanie, aTPlatformView
jest natywnym widokiem, który implementuje kontrolę międzyplatformową na określonej platformie.Notatka
Chociaż wymagane jest utworzenie natywnej klasy częściowej na każdej platformie, dla której budowana jest twoja aplikacja, nie jest konieczne implementowanie funkcjonalności 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ę OnAttachedTo, aby wykonać dowolną konfigurację.
- Zastąpij metodę OnDetachedFrom w celu wykonania dowolnego czyszczenia.
- Zaimplementuj podstawowe funkcje zachowania platformy.
Następnie można zastosować to zachowanie, dołączając je do kolekcji Behaviors 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 typ klasy częściowej, której implementacja zostanie ukończona na każdej wymaganej platformie przez dodatkową klasę częściową o tej samej nazwie. W tym przykładzie klasa TintColorBehavior
definiuje pojedynczą właściwość powiązaną, TintColor
, która będzie barwić obraz na określony kolor.
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 wielokanałowości, zobacz Konfigurowanie wielokrotnego celowania.
Natywne klasy częściowe powinny dziedziczyć z klasy PlatformBehavior<TView> lub klasy PlatformBehavior<TView,TPlatformView>, gdzie TView
jest międzyplatformową kontrolką, do której należy stosować zachowanie, a TPlatformView
jest natywnym widokiem implementujący kontrolę międzyplatformową na określonej platformie. W każdej natywnej klasie częściowej wymaganej do zaimplementowania zachowania platformy należy zastąpić metodę OnAttachedTo i metodę OnDetachedFrom oraz zaimplementować podstawowe funkcje zachowania platformy.
Metoda OnAttachedTo jest wywoływana natychmiast po przypisaniu zachowania platformowego 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 elemencie sterującym. Funkcjonalność zachowania zostanie następnie zaimplementowana w procedurze obsługi zdarzeń dla zdarzenia.
Metoda OnDetachedFrom jest wywoływana 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 elemencie sterującym, aby zapobiec wyciekom pamięci.
Ważny
Klasy częściowe muszą znajdować się w tej samej przestrzeni nazw i używać identycznych nazw.
W poniższym przykładzie przedstawiono klasę częściową TintColorBehavior
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 klasa TintColorBehavior
pochodzi z klasy PlatformBehavior<TView,TPlatformView>, gdzie TView
jest Image, a TPlatformView
jest ImageView.
OnAttachedTo stosuje kolor tonu do obrazu, pod warunkiem, że właściwość TintColor
ma jakąś wartość. Metoda OnDetachedFrom usuwa odcień koloru 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ą jako NO-OP, jeśli operacyjność platformy nie jest wymagana 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żny
.NET MAUI nie ustawia BindingContext
działania platformy.
Korzystanie z zachowania platformy
Każda kontrolka MAUI platformy .NET ma kolekcję Behaviors, do której można dodać co najmniej jedno zachowanie platformy:
<Image Source="dotnet_bot.png"
HeightRequest="200"
HorizontalOptions="Center">
<Image.Behaviors>
<local:TintColorBehavior TintColor="Red" />
</Image.Behaviors>
</Image>
Równoważne Image w języku C# przedstawiono 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 pokazuje, jak platforma zmienia odcień 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 związanego z platformą do niezgodnej kontrolki spowoduje wyrzucenie wyjątku.