Přidružené vlastnosti

Stáhnout ukázku Stažení ukázky

Připojené vlastnosti umožňují objektu přiřadit hodnotu vlastnosti, kterou jeho vlastní třída nedefinuje. Podřízené prvky mohou například pomocí připojených vlastností informovat nadřazený prvek o tom, jak se mají prezentovat v uživatelském rozhraní. Ovládací prvek umožňuje určit řádek a sloupec podřízeného objektu nastavením vlastností Grid a Grid.RowGrid.Column připojených. Grid.Row a Grid.Column jsou připojené vlastnosti, protože jsou nastavené u elementů, které jsou podřízené elementu , a ne u GridGrid samotného objektu .

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

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

Další informace o vlastnostech s možností vazby najdete v tématu Vlastnosti s možností vazby.

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 staticGetstatic objekty připojené vlastnosti zadejte metody PropertyName a SetGet

Vytvoření vlastnosti

Při vytváření připojené vlastnosti pro použití na jiných typech třída, ve které je vlastnost vytvořena, nemusí být odvozena z BindableObject třídy . Cílová vlastnost přístupových objektů by však měla být typu nebo odvozena z .

Připojenou vlastnost lze vytvořit deklarováním public static readonly vlastnosti typu BindableProperty . Vlastnost bindable by měla být nastavená na vrácenou hodnotu jednoho z Xamarin_Forms _BindableProperty_CreateAttached_System_String_System_Type_System_Type_System_Object_ Xamarin_Forms _BindingMode_ Xamarin_Forms _BindableProperty_ValidateValueDelegate_ _BindableProperty_BindingPropertyChangedDelegate_ _BindableProperty_BindingPropertyChangingDelegate_ _BindableProperty_CoerceValueDelegate_ Xamarin_FormsXamarin_FormsXamarin_FormsXamarin_Forms _BindableProperty_CreateDefaultValueDelegate_" data-linktype=" absolute-path">BindableProperty.CreateAttached přetížení metody. Deklarace by měla být v těle vlastnící třídy, ale mimo definice členů.

Důležité

Zásady vytváření názvů pro připojené vlastnosti je, že identifikátor připojené vlastnosti musí odpovídat názvu vlastnosti zadanému v metodě CreateAttached s připojenou vlastností .

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

public static readonly BindableProperty HasShadowProperty =
  BindableProperty.CreateAttached ("HasShadow", typeof(bool), typeof(ShadowEffect), false);

Tím se vytvoří připojená vlastnost HasShadowProperty s názvem typu bool . Vlastnost vlastní třída ShadowEffect a má výchozí hodnotu false .

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

Vytvoření přístupových objektů

Metody Static PropertyName a PropertyName jsou vyžadovány jako přístupové objekty pro připojenou vlastnost, jinak systém vlastností nebude moci GetGetSetSet připojenou vlastnost použít. Přístupový GetGet by měl odpovídat následujícímu podpisu:

public static valueType GetPropertyName(BindableObject target)

Přístupový objekt PropertyName by měl vrátit hodnotu obsaženou v odpovídajícím GetGet poli BindableProperty pro připojenou vlastnost. Toho lze dosáhnout voláním metody Xamarin_Forms _BindableObject_GetValue_ Xamarin_Forms _BindableProperty_" data-linktype="absolute-path">, předáním identifikátoru vázání GetValue vlastnosti, na který chcete získat hodnotu, a pak přetypování výsledné hodnoty na požadovaný typ.

Přístupový SetSet by měl odpovídat následujícímu podpisu:

public static void SetPropertyName(BindableObject target, valueType value)

Přístupový objekt SetSet by měl nastavit hodnotu BindableProperty odpovídajícího pole pro připojenou vlastnost. Toho lze dosáhnout voláním metody Xamarin_Forms _BindableObject_SetValue_ Xamarin_Forms _BindableProperty_System_Object_" data-linktype="absolute-path">a předáním identifikátoru vázání SetValue vlastnosti, pro který chcete nastavit hodnotu, a hodnoty, která se má nastavit.

U obou přístupových objektů by měl být cílový objekt typu nebo odvozen z objektu .

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

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

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

Použí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 lze dosáhnout deklarací oboru názvů s předponou s deklarací oboru názvů označujícím název oboru názvů modulu CLR (Common Language Runtime) a volitelně názvem sestavení. Další informace najdete v tématu Obory názvů XAML.

Následující příklad kódu 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:EffectsDemo" ...>
  ...
</ContentPage>

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

<Label Text="Label Shadow Effect" local:ShadowEffect.HasShadow="true" />

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

var label = new Label { Text = "Label Shadow Effect" };
ShadowEffect.SetHasShadow (label, true);

Používání připojené vlastnosti pomocí stylu

Připojené vlastnosti lze do ovládacího prvku přidat také pomocí stylu. Následující příklad kódu XAML ukazuje explicitní styl, který používá připojenou vlastnost, kterou lze použít u ovládacích Label prvků:

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

Lze použít na nastavením vlastnosti StyleLabel Xamarin_Forms Style _NavigableElement_Style" data-linktype="absolute-path">StyleStyle na StaticResource instanci pomocí rozšíření značek, jak je znázorněno v následujícím příkladu kódu:

<Label Text="Label Shadow Effect" Style="{StaticResource ShadowEffectStyle}" />

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

Pokročilé scénáře

Při vytváření připojené vlastnosti existuje řada volitelných parametrů, které lze nastavit, aby bylo možné povolit 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.