Sdílet prostřednictvím


Připojené vlastnosti

Připojené vlastnosti .NET Multi-Platform App UI (.NET MAUI) umožňují objektu přiřadit hodnotu pro vlastnost, kterou vlastní třída nedefinuje. Podřízené prvky mohou například použít připojené vlastnosti k informování nadřazeného prvku o tom, jak mají být prezentovány v uživatelském rozhraní. Rozložení Grid umožňuje zadat řádek a sloupec podřízeného objektu nastavením Grid.Row a Grid.Column připojených vlastností. Grid.Row a Grid.Column jsou připojeny vlastnosti, protože jsou nastaveny na prvky, které jsou podřízeny , Gridspíše než na Grid sobě.

Vlastnosti s možností vazby by se měly implementovat jako připojené vlastnosti v následujících scénářích:

  • Pokud je potřeba mít k dispozici mechanismus nastavení vlastností pro jiné třídy, než je definice třídy.
  • Když třída představuje službu, která musí být snadno integrována s jinými třídami.

Další informace o svázatelných vlastnostech naleznete v tématu Vlastnosti bindable.

Vytvoření připojené vlastnosti

Proces vytvoření připojené vlastnosti je následující:

  1. Vytvořte BindableProperty instanci s jedním z CreateAttached přetížení metody.
  2. Jako přístupové objekty pro připojenou vlastnost zadejte static Getmetody PropertyName a SetPropertyName.

Vytvoření vlastnosti

Při vytváření připojené vlastnosti pro použití v jiných typech, třída, kde je vlastnost vytvořena, nemusí odvozovat z BindableObject. Cílová vlastnost pro přístupové objekty by však měla být nebo odvozena z BindableObject. Další informace o cílovýchvlastnostech

Připojenou vlastnost lze vytvořit deklarací public static readonly vlastnosti typu BindableProperty. Vlastnost bindable by měla být nastavena na vrácenou hodnotu jednoho z BindableProperty.CreateAttached přetížení metody. Deklarace by měla být v těle vlastní třídy, ale mimo definice členů.

Důležité

Konvence vytváření názvů pro připojené vlastnosti je, že identifikátor připojené vlastnosti musí odpovídat názvu vlastnosti zadané v CreateAttached metodě s "Property" připojený k ní.

Následující kód ukazuje příklad připojené vlastnosti:

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

Tím se vytvoří připojená vlastnost s názvem HasShadowProperty, typu bool. Vlastnost je vlastněna MyControl třídou a má výchozí hodnotu false. Vlastnictví v tomto případě znamená, že vlastnost bude přístupná v XAML pomocí formátu Type.Property, například MyControl.HasShadow.

Další informace o vytváření vlastností s možností vazby, včetně parametrů, které lze zadat při vytváření, naleznete v tématu Vytvoření vlastnosti bindable.

Vytváření přístupových objektů

Statické Getmetody PropertyName a SetPropertyName jsou vyžadovány jako přístupové objekty pro připojenou vlastnost, jinak systém vlastností nebude moci použít připojenou vlastnost. Přístupové Getobjekty PropertyName by měly odpovídat následujícímu podpisu:

public static valueType GetPropertyName(BindableObject target)

Objekt GetPropertyName by měl vrátit hodnotu obsaženou v odpovídajícím BindableProperty poli připojené vlastnosti. Toho lze dosáhnout voláním GetValue metody, předáním identifikátoru vlastnosti bindable, na kterém získat hodnotu, a následným přetypováním výsledné hodnoty na požadovaný typ.

Přístupové Setobjekty PropertyName by měly odpovídat následujícímu podpisu:

public static void SetPropertyName(BindableObject target, valueType value)

Přistupovací Setobjekt PropertyName by měl nastavit hodnotu odpovídajícího BindableProperty pole pro připojenou vlastnost. Toho lze dosáhnout voláním SetValue metody, předáním identifikátoru vlastnosti bindable, na kterém chcete nastavit hodnotu, a hodnotu, která se má nastavit.

Pro oba přístupové objekty by měl být cílový objekt nebo odvozen od . BindableObject Další informace o cílovýchobjektch

Následující příklad kódu ukazuje přístupové objekty pro připojenou HasShadow vlastnost:

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

Využívání připojené vlastnosti

Po vytvoření připojené vlastnosti je možné ji využívat z XAML nebo kódu. V jazyce XAML toho dosáhnete deklarací oboru názvů s předponou, deklarací oboru názvů označující název oboru názvů CLR (Common Language Runtime) a volitelně název sestavení. Další informace naleznete v tématu Obory názvů XAML.

Následující příklad ukazuje obor názvů XAML pro vlastní typ, který obsahuje připojenou vlastnost, která je definována ve stejném sestavení jako kód aplikace odkazující na vlastní typ:

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

Deklarace oboru názvů se pak použije při nastavování připojené vlastnosti na konkrétním ovládacím prvku, jak je znázorněno v následujícím kódu XAML:

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

Ekvivalentní kód jazyka C# je znázorněn v následujícím příkladu kódu:

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

Využívání připojené vlastnosti se stylem

Připojené vlastnosti lze také přidat do ovládacího prvku stylem. Následující příklad kódu XAML ukazuje explicitní styl pro Label ovládací prvky, které používají připojenou HasShadow vlastnost:

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

Lze Style použít na objekt Label nastavením jeho Style vlastnosti na Style instanci pomocí StaticResource rozšíření značek, jak je znázorněno v následujícím příkladu kódu:

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

Další informace o stylech naleznete v tématu Styly.

Pokročilé scénáře

Při vytváření připojené vlastnosti existují některé volitelné parametry, které lze nastavit tak, aby umožňovaly pokročilé scénáře připojených vlastností. To zahrnuje detekci změn vlastností, ověřování hodnot vlastností a vynucení hodnot vlastností. Další informace najdete v tématu Pokročilé scénáře.