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.
Možnosti metadat vlastností architektury pro vlastnosti závislostí můžete nastavit na úrovni architektury WPF (Windows Presentation Foundation). Označení na úrovni frameworku WPF platí, když rozhraní API prezentace WPF a spustitelné soubory zpracovávají vykreslování a datovou vazbu. Prezentační rozhraní API a spustitelné soubory dotazují FrameworkPropertyMetadata vlastnost závislosti.
Požadavky
Článek předpokládá základní znalost vlastností závislostí a že jste si přečetli přehled vlastností závislostí. Pokud chcete postupovat podle příkladů v tomto článku, pomůže vám to, pokud znáte jazyk XAML (Extensible Application Markup Language) a víte, jak psát aplikace WPF.
Kategorie metadat vlastností rámce
FrameworkPropertyMetadata spadá do těchto kategorií:
Metadata, která ovlivňují rozložení prvku, konkrétně příznaky metadata AffectsArrange, AffectsMeasure a AffectsRender. Tyto příznaky můžete nastavit, pokud implementace vlastnosti závislosti ovlivňuje vizuální aspekt a implementujete MeasureOverride nebo ArrangeOverride ve své třídě. Metody
MeasureOverrideaArrangeOverrideposkytují informace o chování specifické pro implementaci a vykreslování do systému rozložení. KdyžAffectsArrange,AffectsMeasureneboAffectsRenderjsou nastaveny natruemetadata vlastnosti závislosti a jeho efektivní hodnoty změny, WPF systém vlastností zahájí požadavek na zneplatnění vizuálů elementu k aktivaci překreslení.Metadata, která ovlivňují rozložení nadřazeného prvku elementu, například AffectsParentArrange a AffectsParentMeasure metadata příznaky. Příklady vlastností závislostí WPF, které tyto příznaky nastavují, jsou FixedPage.Left a Paragraph.KeepWithNext.
Metadata dědičnosti hodnot vlastností, konkrétně příznaky metadat Inherits a OverridesInheritanceBehavior. Ve výchozím nastavení vlastnosti závislostí nedědí hodnoty. OverridesInheritanceBehavior také umožňuje, aby cesta dědičnosti vedla do vizuálního stromu, což je nezbytné pro některé scénáře skládání ovládacích prvků. Další informace naleznete v tématu Dědičnost hodnoty vlastnosti.
Poznámka:
Termín "dědí" v kontextu hodnot vlastností je specifický pro vlastnosti závislosti a nesouvisí přímo se spravovanými typy kódu a dědičností členů prostřednictvím odvozených typů. V kontextu vlastností závislosti to znamená, že podřízené prvky mohou dědit hodnoty vlastností závislostí z nadřazených prvků.
Metadata datové vazby, konkrétně příznaky metadat BindsTwoWayByDefault a IsNotDataBindable. Ve výchozím nastavení vlastnosti závislostí v rozhraní WPF podporují jednosměrnou vazbu. Zvažte nastavení obousměrné vazby jako výchozí pro vlastnosti, které hlásí stav a které lze upravit pomocí akce uživatele, například IsSelected. Zvažte také nastavení obousměrné vazby jako výchozí, když uživatelé ovládacího prvku očekávají implementaci vlastnosti, například TextBox.Text.
BindsTwoWayByDefaultmá vliv pouze na výchozí režim vazby. Pokud chcete upravit směr toku dat vazby, nastavte Binding.Mode. Datovou vazbu můžeteIsNotDataBindablezakázat, když pro ni neexistuje žádný případ použití. Další informace o datových vazbách najdete v tématu Přehled datových vazeb.Zaznamenávání metadat, konkrétně příznak metadat Journal. Výchozí hodnota příznaku
Journalje pouzetruepro některé vlastnosti závislosti, například SelectedIndex. Ovládací prvky uživatelského vstupu by měly nastavitJournalpříznak pro vlastnosti, jejichž hodnoty obsahují výběry uživatelů, které je potřeba uložit. PříznakJournalčte aplikace nebo služby, které podporují deníkování, včetně služeb deníku WPF. Informace o ukládání navigačních kroků najdete v přehledu navigace.
FrameworkPropertyMetadata odvozuje přímo od UIPropertyMetadataa implementuje příznaky, které jsou zde popsány. Pokud nejsou výslovně nastaveny, FrameworkPropertyMetadata příznaky mají výchozí hodnotu false.
Čtení FrameworkPropertyMetadata
Pokud chcete načíst metadata vlastnosti závislosti, zavolejte GetMetadata na identifikátor DependencyProperty. Volání GetMetadata vrátí PropertyMetadata objekt. Pokud potřebujete provádět dotazy na hodnoty metadat frameworku, přetypujte PropertyMetadata na FrameworkPropertyMetadata.
Určení frameworkPropertyMetadata
Při registraci vlastnosti závislosti máte možnost vytvořit a přiřadit k ní metadata. Objekt metadat, který přiřadíte, může být PropertyMetadata nebo jedna z jeho odvozených tříd, například FrameworkPropertyMetadata. Zvolte FrameworkPropertyMetadata pro vlastnosti závislosti, které se spoléhají na prezentační rozhraní API WPF a komponenty pro vykreslování a datové vazby. Pokročilejší možností je odvodit z FrameworkPropertyMetadata vlastní třídu pro sestavy metadat s dalšími příznaky. Nebo můžete použít UIPropertyMetadata pro vlastnosti jiné architektury, které ovlivňují vykreslování uživatelského rozhraní.
I když jsou možnosti metadat obvykle nastaveny během registrace nové vlastnosti závislosti, můžete je znovu nastavit pomocí volání OverrideMetadata nebo AddOwner. Při přepsání metadat vždy přepište stejným typem metadat, který byl použit během registrace vlastnosti.
Vlastnosti, které jsou vystaveny FrameworkPropertyMetadata, jsou někdy označovány jako příznaky . Pokud vytváříte FrameworkPropertyMetadata instanci, existují dva způsoby, jak naplnit hodnoty příznaku:
Nastavte příznaky u instance typu výčtu FrameworkPropertyMetadataOptions .
FrameworkPropertyMetadataOptionsumožňuje zadat příznaky metadat v bitové kombinaci OR. Potom vytvořte instanciFrameworkPropertyMetadatapomocí konstruktoruFrameworkPropertyMetadataOptions, který přijímá parametr, a předejte mu svou instanciFrameworkPropertyMetadataOptions. Chcete-li změnit příznaky metadat po předáníFrameworkPropertyMetadataOptionsdo konstruktoru FrameworkPropertyMetadata , změňte odpovídající vlastnost v novéFrameworkPropertyMetadatainstanci. Pokud například nastavíte FrameworkPropertyMetadataOptions.NotDataBindable příznak, můžete ho vrátit zpět nastavením FrameworkPropertyMetadata.IsNotDataBindable nafalsehodnotu .FrameworkPropertyMetadataVytvořte instanci pomocí konstruktoru, který nemáFrameworkPropertyMetadataOptionsparametr, a pak nastavte příslušné Boolean příznaky naFrameworkPropertyMetadata. Před přidruženímFrameworkPropertyMetadatainstance k vlastnosti závislosti nastavte hodnoty příznaku, jinak získáte hodnotu InvalidOperationException.
Chování přepsání metadat
Při přepsání metadat vlastností architektury se změněné hodnoty metadat buď nahradí, nebo se sloučí s původními hodnotami:
PropertyChangedCallback Výchozí logika sloučení uchovává předchozí hodnoty
PropertyChangedCallbackv tabulce a všechny jsou aktivovány při změně vlastnosti. Pořadí zpětného volání je určeno hloubkou třídy, kdy se nejprve spustí zpětné volání registrované základní třídou v hierarchii. Děděná zpětná volání se provádějí pouze jednou a jsou vlastněna třídou, která je přidala do metadat.U DefaultValuenahradí nová hodnota stávající výchozí hodnotu. Pokud v metadatech přepsání nezadáte
DefaultValuea pokud má existující FrameworkPropertyMetadata nastavený příznakInherits, pak výchozí hodnota pochází z nejbližšího nadřazeného objektu, který specifikovalDefaultValuev metadatech.CoerceValueCallbackNová hodnota nahradí existující
CoerceValueCallbackhodnotu. Pokud nezadáteCoerceValueCallbackv metadatech přepsání, hodnota pochází z nejbližšího nadřazeného prvku v řetězci dědičnosti, který zadalCoerceValueCallback.U
FrameworkPropertyMetadatanezděděných příznaků můžete přepsat výchozífalsehodnotutruehodnotou. Můžete však přepsattruehodnotu hodnotoufalsepro Inherits, Journal, OverridesInheritanceBehavior, a SubPropertiesDoNotAffectRender.
Poznámka:
Výchozí logika sloučení je implementována metodou Merge. Vlastní logiku sloučení můžete zadat v odvozené třídě s děděnou vlastností závislosti, přepsáním Merge v této třídě.
Viz také
- PropertyMetadata
- GetMetadata
- OverrideMetadata
- AddOwner
- Metadatová vlastnost závislosti
- Přehled vlastností závislosti
- Vlastní vlastnosti závislosti
.NET Desktop feedback