Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pomocí třídy PropertyPath a syntaxe řetězce můžete vytvořit instanci hodnoty PropertyPath buď v XAML, nebo v kódu. Hodnoty PropertyPath se používají pomocí datové vazby. Podobná syntaxe se používá pro cílení na animace s obsahem scénáře. V obou scénářích cesta vlastnosti popisuje procházení jednoho nebo více relací vlastností objektu, které se nakonec přeloží na jednu vlastnost.
Řetězec cesty k vlastnosti můžete přímo nastavit na atribut v jazyce XAML. Stejnou syntaxi řetězce můžete použít k vytvoření VlastnostiPath , která nastaví vazbu v kódu, nebo nastavit animační cíl v kódu pomocí SetTargetProperty. Ve Windows Runtime existují dvě různé oblasti funkcí, které používají cestu vlastnosti: datovou vazbu a cílení na animace. Cílení animací nevytváří v implementaci prostředí Windows Runtime hodnoty syntaxe cesty vlastností, namísto toho informace zůstávají jako řetězec, avšak koncepty procházení vlastností objektů jsou velmi podobné. Datové vazby a animace, které cílí na každou z nich, vyhodnocují cestu vlastnosti mírně odlišně, takže pro každou z nich popisujeme syntaxi cesty vlastností samostatně.
Cesta k vlastnostem objektů v datové vazbě
Ve Windows Runtime můžete vytvořit vazbu na cílovou hodnotu jakékoli vlastnosti závislosti. Hodnota zdrojové vlastnosti datové vazby nemusí být vlastností závislosti; může to být vlastnost obchodního objektu (například třída napsaná v jazyce Microsoft .NET nebo C++). Zdrojovým objektem pro hodnotu vazby může být existující objekt závislosti, který už aplikace definuje. Zdroj lze odkazovat buď jednoduchým názvem vlastnosti, nebo procházením relací mezi objekty v objektovém grafu obchodního objektu.
Můžete vytvořit vazbu na hodnotu jednotlivé vlastnosti nebo můžete vytvořit vazbu na cílovou vlastnost, která obsahuje seznamy nebo kolekce. Pokud je zdrojem kolekce nebo pokud cesta určuje vlastnost kolekce, modul vazby dat odpovídá položkám kolekce zdroje s cílem vazby, což vede k chování, jako je naplnění ListBox seznamem položek z kolekce zdrojů dat, aniž by bylo nutné předvídat konkrétní položky v této kolekci.
Procházení grafu objektů
Prvek syntaxe, která označuje procházení relace objekt-vlastnost v grafu objektu je tečka (.). Každá tečka v řetězci cesty vlastnosti označuje dělení mezi objekt (levá strana tečky) a vlastností tohoto objektu (pravá strana tečky). Řetězec se vyhodnocuje zleva doprava, což umožňuje krokování mezi více relacemi vlastností objektu. Podívejme se na příklad:
"{Binding Path=Customer.Address.StreetAddress1}"
Takto se tato cesta vyhodnocuje:
- Objekt kontextu dat (nebo zdroj zadaný stejnou Vazbou) se hledá pro vlastnost s názvem "Customer".
- Objekt, který je hodnotou vlastnosti "Customer", je prohledáván pro vlastnost s názvem "Address".
- Objekt, který je hodnotou vlastnosti "Address", je vyhledán pro vlastnost s názvem "StreetAddress1".
V každém z těchto kroků se hodnota považuje za objekt. Typ výsledku je kontrolován pouze při použití vazby na konkrétní vlastnost. Tento příklad by selhal, kdyby "Adresa" byla jen hodnota typu řetězec, která by neukázala, která část řetězce je poštovní adresa. Vazba obvykle směřuje na konkrétní hodnoty vnořených vlastností obchodního objektu, který má dobře definovanou a záměrnou informační strukturu.
Pravidla vlastností v cestě vlastnosti datové vazby
- Všechny vlastnosti odkazované cestou vlastností musí být veřejně dostupné ve zdrojovém obchodním objektu.
- Koncová vlastnost (vlastnost, která je poslední pojmenovanou vlastností v cestě), musí být veřejná a musí být proměnlivá – nelze vytvořit vazbu na statické hodnoty.
- Koncová vlastnost musí umožňovat čtení a zápis, pokud se tato cesta používá jako informace o cestě pro obousměrnou vazbu.
Indexátory
Cesta vlastnosti pro vázání dat může obsahovat odkazy na indexované vlastnosti. To umožňuje vazbu na seřazené seznamy/vektory nebo slovníky/mapy. K označení indexované vlastnosti použijte hranaté závorky []. Obsah těchto závorek může být celé číslo (pro seřazený seznam) nebo necitovaný řetězec (pro slovníky). Můžete také vytvořit vazbu na slovník, ve kterém je klíč celé číslo. Ve stejné cestě můžete použít různé indexované vlastnosti s tečkou oddělující vlastnosti objektu.
Představte si například obchodní objekt, ve kterém je seznam "Teams" (seřazený seznam), z nichž každý má slovník "Hráči", kde každý hráč má klíč podle příjmení. Příklad cesty k vlastnosti ke konkrétnímu hráči ve druhém týmu je: "Teams[1].Players[Smith]". (Pomocí 1 označíte druhou položku v Teams, protože seznam je indexovaný nulou.)
Poznámka:
Podpora indexování zdrojů dat C++ je omezená; viz hloubková datová vazba.
Připojené vlastnosti
Cesty vlastností mohou obsahovat odkazy na připojené vlastnosti. Vzhledem k tomu, že název připojené vlastnosti již obsahuje tečku, je nutné uzavřít jakýkoli připojený název vlastnosti v závorkách, aby tečka nebyla považována za krok vlastnosti objektu. Například řetězec k zadání, že chcete použít Canvas.ZIndex jako cestu vazby, je "(Canvas.ZIndex)". Další informace o připojených vlastnostech naleznete v přehledu připojených vlastností.
Kombinování syntaxe vlastností cesty
V jednom řetězci můžete kombinovat různé prvky syntaxe vlastnostní cesty. Můžete například definovat cestu vlastnosti, která odkazuje na indexovanou připojenou vlastnost, pokud váš zdroj dat měl takovou vlastnost.
Ladění cesty vazební vlastnosti
Vzhledem k tomu, že cesta vlastnosti je interpretována vazbovým strojem a spoléhá na informace, které mohou být přítomny pouze za běhu, je nutné často ladit cestu vlastnosti pro vazbu, aniž by bylo možné spoléhat na konvenční podporu návrhu nebo kompilace ve vývojových nástrojích. V mnoha případech je výsledkem neúspěšného vyřešení cesty vlastnosti prázdná hodnota bez chyby, protože se jedná o náhradní chování řešení vazby podle návrhu. Naštěstí, Microsoft Visual Studio poskytuje ladicí výstupní režim, který dokáže izolovat, která část cesty vlastnosti určující zdroj vazby selhala při vyřešení. Další informace o použití této funkce vývojového nástroje najdete v části Ladění datové vazby podrobně.
Cesta k vlastnosti pro cílení animace
Animace používají vlastnost závislosti, kde se při spuštění animace použijí stanovené hodnoty. Chcete-li identifikovat objekt, ve kterém je vlastnost, která má být animovaný, animace cílí na prvek podle názvu (atribut x:Name). Často je nutné definovat cestu vlastnosti, která začíná objektem identifikovaným jako Storyboard.TargetName, a končí konkrétní hodnotou vlastnosti závislosti, kde by se měla animace použít. Tato vlastnost cesty se používá jako hodnota Storyboard.TargetProperty.
Další informace o tom, jak definovat animace v JAZYCE XAML, najdete v tématu Animace ve scénářích.
Jednoduché cílení
Pokud animujete vlastnost, která existuje u samotného cílového objektu, a typ této vlastnosti může mít animaci použitou přímo na ni (nikoli na dílčí vlastnost hodnoty vlastnosti), můžete jednoduše pojmenovat vlastnost, která se bude animovat bez jakékoli další kvalifikace. Pokud například cílíte na podtřídu Shape, jako je Rectangle, a u vlastnosti výplň použijete animovanou barvu, vaše cesta k vlastnosti může být "výplň".
Cílení na nepřímé vlastnosti
Můžete animovat vlastnost, která je dílčí vlastností cílového objektu. Jinými slovy, pokud je vlastnost cílového objektu, která je samotným objektem, a tento objekt má vlastnosti, musíte definovat cestu vlastnosti, která vysvětluje, jak procházet tento vztah vlastností objektu. Pokaždé, když určujete objekt, ve kterém chcete animovat podvlastnost, uzavřete název vlastnosti do závorek a zadejte vlastnost ve formátu typename.propertyname. Chcete-li například určit, že chcete hodnotu vlastnosti RenderTransform cílového objektu, zadáte "(UIElement.RenderTransform)" jako první krok v cestě vlastnosti. Tato cesta ještě není úplná, protože neexistují žádné animace, které by mohly být aplikovány přímo na hodnotu Transformace . V tomto příkladu tedy dokončíte cestu k vlastnosti tak, aby koncová vlastnost byla vlastností podtřídy Transformace , kterou lze animovat dvojitou hodnotou: "(UIElement.RenderTransform). (CompositeTransform.TranslateX)"
Určení konkrétního prvku v kolekci
Chcete-li zadat podřízenou položku ve vlastnosti kolekce, můžete použít číselný index. Kolem celočíselné hodnoty indexu používejte hranaté závorky []. Můžete odkazovat pouze na uspořádané seznamy, nikoli slovníky. Protože kolekce není hodnota, kterou lze animovat, použití indexeru nemůže být nikdy koncovou vlastností v cestě vlastnosti.
Chcete-li například určit, že chcete animovat první barvu zarážky barev v LinearGradientBrush , který je použit pro vlastnost Pozadí ovládacího prvku, toto je cesta vlastnosti: "(Control.Background). (GradientBrush.GradientStops)[0]. (GradientStop.Color)". Všimněte si, že indexer není posledním krokem v cestě a že poslední krok musí zejména odkazovat na vlastnost GradientStop.Color položky 0 v kolekci, aby se na ni použila animovaná hodnota Color .
Animace připojené vlastnosti
Není to běžný scénář, ale je možné animovat připojenou vlastnost, pokud má připojená vlastnost hodnotu vlastnosti, která odpovídá typu animace. Vzhledem k tomu, že název připojené vlastnosti již obsahuje tečku, je nutné uzavřít jakýkoli připojený název vlastnosti v závorkách, aby tečka nebyla považována za krok vlastnosti objektu. Například, chcete-li animovat připojenou vlastnost Grid.Row na objektu, použijte cestu vlastnosti "(Grid.Row)".
Poznámka:
V tomto příkladu je hodnota Grid.Row typ vlastnosti Int32 . takže ho nemůžete animovat dvojitou animací. Místo toho byste definovali ObjectAnimationUsingKeyFrames s komponentamiDiscreteObjectKeyFrame , kde ObjectKeyFrame.Value je nastaveno na celé číslo, například 0 nebo 1.
Pravidla pro vlastnosti v cílové cestě vlastností pro animaci
- Předpokládaný výchozí bod cesty vlastnosti je objekt identifikovaný Storyboard.TargetName.
- Všechny objekty a vlastnosti odkazované v rámci cesty vlastnosti musí být veřejné.
- Koncová vlastnost (vlastnost, která je poslední pojmenovanou vlastností v cestě) musí být veřejná, musí být pro čtení i zápis a musí být vlastností závislosti.
- Koncová vlastnost musí mít typ vlastnosti, který může být animovaný jednou z širokých tříd animačních typů (barevné animace, dvojité animace, bodové animace, ObjectAnimationUsingKeyFrames).
Třída PropertyPath
Třída PropertyPath je základní typ vlastnosti Binding.Path pro scénář vazby.
Ve většině případů můžete použít vlastnost PropertyPath v jazyce XAML bez použití jakéhokoli kódu vůbec. V některých případech ale můžete chtít definovat objekt PropertyPath pomocí kódu a přiřadit ho k vlastnosti za běhu.
PropertyPath má konstruktor PropertyPath(String) a nemá výchozí konstruktor. Řetězec, který předáte tomuto konstruktoru, je řetězec definovaný pomocí syntaxe cesty vlastnosti, jak bylo vysvětleno výše. Jedná se také o stejný řetězec, který byste použili k přiřazení cesty jako atributu XAML. Jediným dalším rozhraním API třídy PropertyPath je vlastnost Path , která je určena jen pro čtení. Tuto vlastnost můžete použít jako stavební řetězec pro jinou instanci PropertyPath .
Související témata
Windows developer