Přidružené vlastnosti
Připojené vlastnosti umožňují objektu přiřadit hodnotu vlastnosti, 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 se mají prezentovat v uživatelském rozhraní. Ovládací Grid
prvek 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řipojené vlastnosti, protože jsou nastaveny na prvky, které jsou podřízené objektu Grid
, místo samotného Grid
.
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 mechanismus nastavení vlastností dostupný pro jiné třídy než definice třídy.
- Když třída představuje službu, která musí být snadno integrovaná s jinými třídami.
Další informace o svázatelných vlastnostech naleznete v tématu Vlastnosti s možností vazby.
Vytvoření připojené vlastnosti
Proces vytvoření připojené vlastnosti je následující:
BindableProperty
Vytvořte instanci s jedním zCreateAttached
přetížení metody.- Zadejte
static
Get
metody PropertyName aSet
PropertyName jako přístupové objekty pro připojenou vlastnost.
Vytvoření vlastnosti
Při vytváření připojené vlastnosti pro použití na jiných typech nemusí třída, ze které je vlastnost vytvořena, odvozena od BindableObject
. Cílová vlastnost pro příslušenství by však měla být nebo odvozena z BindableObject
.
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 pojmenování připojených vlastností spočívá v tom, že identifikátor připojené vlastnosti musí odpovídat názvu vlastnosti zadanému v CreateAttached
metodě s připojeným parametrem Property.
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 s názvem HasShadowProperty
, typu bool
. Vlastnost vlastní ShadowEffect
třída a má výchozí hodnotu false
.
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 s možností vazby.
Vytváření přístupových objektů
Statické Get
metody PropertyName a Set
PropertyName jsou vyžadovány jako přístupové objekty pro připojenou vlastnost, jinak systém vlastností nebude moci použít připojenou vlastnost. Přístup propertyNameGet
by měl odpovídat následujícímu podpisu:
public static valueType GetPropertyName(BindableObject target)
Objekt Get
PropertyName by měl vrátit hodnotu obsaženou v odpovídajícím BindableProperty
poli pro připojenou vlastnost. Toho lze dosáhnout voláním GetValue
metody, předáním identifikátoru svázatelné vlastnosti, na kterém se má získat hodnota, a následným přetypováním výsledné hodnoty do požadovaného typu.
Přístup propertyNameSet
by měl odpovídat následujícímu podpisu:
public static void SetPropertyName(BindableObject target, valueType value)
Objekt Set
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 svázatelné vlastnosti, na kterém má být nastavena hodnota, a hodnotou, kterou chcete nastavit.
Pro oba přístupové objekty by měl být cílový objekt nebo odvozen z . BindableObject
Následující příklad kódu ukazuje přístupové objekty pro připojenou HasShadow
vlastnost:
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 XAML toho dosáhnete deklarováním oboru názvů s předponou, s deklarací oboru názvů označující název oboru názvů CLR (Common Language Runtime) a volitelně název 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 na konkrétním ovládacím 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# se zobrazí v následujícím příkladu kódu:
var label = new Label { Text = "Label Shadow Effect" };
ShadowEffect.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, který používá připojenou HasShadow
vlastnost, kterou lze použít u Label
ovládacích prvků:
<Style x:Key="ShadowEffectStyle" TargetType="Label">
<Style.Setters>
<Setter Property="local:ShadowEffect.HasShadow" Value="true" />
</Style.Setters>
</Style>
Tuto Style
vlastnost lze použít u Label
instance nastavením vlastnosti Style
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 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 tak, aby povolily pokročilé připojené scénáře 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.