Udostępnij za pośrednictwem


Dołączone zachowania

Dołączone zachowania to klasy statyczne z co najmniej jedną dołączoną właściwością. W tym artykule przedstawiono sposób tworzenia i korzystania z dołączonych zachowań.

Omówienie

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ą.

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.

Problem z dołączonymi zachowaniami polega na tym, że są one zdefiniowane w static klasie z właściwościami i metodami static . Utrudnia to tworzenie dołączonych zachowań, które mają stan. Ponadto Xamarin.Forms zachowania zastąpiły dołączone zachowania jako preferowane podejście do budowy zachowań. Aby uzyskać więcej informacji na temat Xamarin.Forms zachowań, zobacz Xamarin.Forms Zachowania.

Tworzenie dołączonego zachowania

Przykładowa aplikacja demonstruje NumericValidationBehaviorelement , który wyróżnia wartość wprowadzoną przez użytkownika w kontrolce Entry na czerwono, jeśli nie jest to double. Zachowanie zostało pokazane w poniższym przykładzie kodu:

public static class NumericValidationBehavior
{
    public static readonly BindableProperty AttachBehaviorProperty =
        BindableProperty.CreateAttached (
            "AttachBehavior",
            typeof(bool),
            typeof(NumericValidationBehavior),
            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)
    {
        var 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 ? Color.Default : Color.Red;
    }
}

Klasa NumericValidationBehavior 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. Podstawowe funkcje zachowania są udostępniane przez metodę OnEntryTextChanged , która analizuje wartość wprowadzoną przez Entry użytkownika i ustawia TextColor właściwość na czerwoną, jeśli wartość nie jest wartością double.

Korzystanie z dołączonego zachowania

Klasę NumericValidationBehavior można użyć przez dodanie dołączonej AttachBehavior właściwości do Entry kontrolki, jak pokazano w poniższym przykładzie kodu XAML:

<ContentPage ... xmlns:local="clr-namespace:WorkingWithBehaviors;assembly=WorkingWithBehaviors" ...>
    ...
    <Entry Placeholder="Enter a System.Double" local:NumericValidationBehavior.AttachBehavior="true" />
    ...
</ContentPage>

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

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

W czasie wykonywania zachowanie będzie reagować na interakcję z kontrolką zgodnie z implementacją zachowania. Na poniższych zrzutach ekranu przedstawiono dołączone zachowanie odpowiadające na nieprawidłowe dane wejściowe:

Przykładowa aplikacja z dołączonym zachowaniem

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. Próba dołączenia zachowania do niezgodnej kontrolki spowoduje nieznane zachowanie i zależy od implementacji zachowania.

Usuwanie dołączonego zachowania z kontrolki

Klasę NumericValidationBehavior można usunąć z kontrolki, ustawiając dołączoną AttachBehavior właściwość na falsewartość , jak pokazano w poniższym przykładzie kodu XAML:

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

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

var entry = new Entry { Placeholder = "Enter a System.Double" };
NumericValidationBehavior.SetAttachBehavior (entry, 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, gdy użytkownik wchodzi w interakcję z kontrolką.

Podsumowanie

W tym artykule przedstawiono sposób tworzenia i korzystania z dołączonych zachowań. Dołączone zachowania to static klasy z co najmniej jedną dołączoną właściwością.