Udostępnij za pośrednictwem


Dołączone właściwości

Dołączone właściwości interfejsu użytkownika aplikacji wieloplatformowej platformy .NET (.NET MAUI) umożliwiają obiektowi przypisanie wartości dla właściwości, która nie definiuje własnej klasy. Na przykład elementy podrzędne mogą używać dołączonych właściwości, aby poinformować ich element nadrzędny o tym, jak mają być prezentowane w interfejsie użytkownika. Układ Grid umożliwia określenie wiersza i kolumny elementu podrzędnego przez ustawienie Grid.Row właściwości i Grid.Column dołączonych. Grid.Row i Grid.Column są dołączone właściwości, ponieważ są one ustawione na elementach podrzędnych Gridelementu , a nie na Grid samym.

Właściwości możliwe do powiązania należy zaimplementować jako dołączone właściwości w następujących scenariuszach:

  • Jeśli istnieje potrzeba, aby mechanizm ustawiania właściwości był dostępny dla klas innych niż klasa definiująca.
  • Gdy klasa reprezentuje usługę, która musi być łatwo zintegrowana z innymi klasami.

Aby uzyskać więcej informacji na temat właściwości możliwych do powiązania, zobacz Powiązane właściwości.

Tworzenie dołączonej właściwości

Proces tworzenia dołączonej właściwości jest następujący:

  1. BindableProperty Utwórz wystąpienie z jednym CreateAttached z przeciążeń metody.
  2. Podaj static Getmetody PropertyName i SetPropertyName jako metody dostępu dla dołączonej właściwości.

Tworzenie właściwości

Podczas tworzenia dołączonej właściwości do użycia w innych typach klasa, w której tworzona jest właściwość, nie musi pochodzić z BindableObjectklasy . Jednak właściwość docelowa dla metod dostępu powinna mieć wartość lub pochodzić z klasy BindableObject. Aby uzyskać więcej informacji na temat właściwości docelowych, zobacz Podstawowe powiązania.

Dołączoną właściwość można utworzyć, deklarując public static readonly właściwość typu BindableProperty. Właściwość powiązana powinna być ustawiona na zwracaną wartość jednego z BindableProperty.CreateAttached przeciążeń metody. Deklaracja powinna znajdować się w treści klasy należącej do klasy, ale poza definicjami składowymi.

Ważne

Konwencja nazewnictwa dołączonych właściwości polega na tym, że dołączony identyfikator właściwości musi być zgodny z nazwą właściwości określoną w CreateAttached metodzie, z dołączonym ciągiem "Property".

Poniższy kod przedstawia przykład dołączonej właściwości:

public class MyControl
{
    public static readonly BindableProperty HasShadowProperty =
        BindableProperty.CreateAttached("HasShadow", typeof(bool), typeof(MyControl), false);
}

Spowoduje to utworzenie dołączonej właściwości o nazwie HasShadowProperty, typu bool. Właściwość jest własnością MyControl klasy i ma wartość falsedomyślną . W tym przypadku własność oznacza, że dostęp do właściwości będzie uzyskiwany w języku XAML przy użyciu formatu Type.Property, na przykład MyControl.HasShadow.

Aby uzyskać więcej informacji na temat tworzenia właściwości możliwych do powiązania, w tym parametrów, które można określić podczas tworzenia, zobacz Tworzenie właściwości możliwej do powiązania.

Tworzenie metod dostępu

Metody Static GetPropertyName i SetPropertyName są wymagane jako metody dostępu dla dołączonej właściwości. W przeciwnym razie system właściwości nie będzie mógł użyć dołączonej właściwości. Akcesorium GetPropertyName powinno być zgodne z następującym podpisem:

public static valueType GetPropertyName(BindableObject target)

Akcesorium GetPropertyName powinno zwrócić wartość zawartą w odpowiednim BindableProperty polu dla dołączonej właściwości. Można to osiągnąć, wywołując metodę GetValue , przekazując identyfikator właściwości możliwej do powiązania, dla której ma zostać pobrana wartość, a następnie rzutując wynikową wartość na wymagany typ.

Akcesorium SetPropertyName powinno być zgodne z następującym podpisem:

public static void SetPropertyName(BindableObject target, valueType value)

Metodę Setdostępu PropertyName należy ustawić wartość odpowiedniego BindableProperty pola dla dołączonej właściwości. Można to osiągnąć, wywołując metodę SetValue , przekazując identyfikator właściwości możliwej do powiązania, dla której należy ustawić wartość, oraz wartość do ustawienia.

W przypadku obu metod dostępu obiekt docelowy powinien mieć wartość lub pochodzić z BindableObjectklasy . Aby uzyskać więcej informacji na temat obiektów docelowych, zobacz Podstawowe powiązania.

Poniższy przykład kodu przedstawia metody dostępu dla dołączonej HasShadow właściwości:

public class MyControl
{
    public static bool GetHasShadow(BindableObject view)
    {
        return (bool)view.GetValue (HasShadowProperty);
    }

    public static void SetHasShadow(BindableObject view, bool value)
    {
        view.SetValue(HasShadowProperty, value);
    }  
}

Korzystanie z dołączonej właściwości

Po utworzeniu dołączonej właściwości można jej używać z kodu lub kodu XAML. W języku XAML jest to osiągane przez zadeklarowanie przestrzeni nazw z prefiksem z deklaracją przestrzeni nazw wskazującą nazwę przestrzeni nazw środowiska uruchomieniowego języka wspólnego (CLR) i opcjonalnie nazwę zestawu. Aby uzyskać więcej informacji, zobacz Przestrzenie nazw XAML.

W poniższym przykładzie pokazano przestrzeń nazw XAML dla typu niestandardowego zawierającego dołączoną właściwość, która jest zdefiniowana w tym samym zestawie co kod aplikacji odwołujący się do typu niestandardowego:

<ContentPage ... xmlns:local="clr-namespace:ShadowDemo" ...>
  ...
</ContentPage>

Deklaracja przestrzeni nazw jest następnie używana podczas ustawiania dołączonej właściwości w określonej kontrolce, jak pokazano w poniższym kodzie XAML:

<Label Text="Label with shadow" local:MyControl.HasShadow="true" />

Równoważny kod języka C# jest pokazany w poniższym przykładzie kodu:

Label label = new Label { Text = "Label with shadow" };
MyControl.SetHasShadow (label, true);

Korzystanie z dołączonej właściwości ze stylem

Dołączone właściwości można również dodać do kontrolki według stylu. Poniższy przykład kodu XAML przedstawia jawny styl kontrolek Label korzystających z dołączonej HasShadow właściwości:

<Style x:Key="ShadowStyle" TargetType="Label">
  <Style.Setters>
    <Setter Property="local:MyControl.HasShadow" Value="true" />
  </Style.Setters>
</Style>

Można Style go zastosować, Label ustawiając jego Style właściwość na Style wystąpienie przy użyciu StaticResource rozszerzenia znaczników, jak pokazano w poniższym przykładzie kodu:

<Label Text="Label with shadow" Style="{StaticResource ShadowStyle}" />

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

Zaawansowane scenariusze

Podczas tworzenia dołączonej właściwości istnieje kilka opcjonalnych parametrów, które można ustawić w celu włączenia zaawansowanych scenariuszy dołączonych właściwości. Obejmuje to wykrywanie zmian właściwości, weryfikowanie wartości właściwości i wartości właściwości współtworzenia. Aby uzyskać więcej informacji, zobacz Scenariusze zaawansowane.