Přehled základních elementů

Vysoké procento tříd ve Windows Presentation Foundation (WPF) jsou odvozeny ze čtyř tříd, které se běžně označují v dokumentaci sady SDK jako základní třídy elementů. Tyto třídy jsou UIElement, FrameworkElement, ContentElementa FrameworkContentElement. Třída DependencyObject je také související, protože se jedná o společnou základní třídu obou UIElement a ContentElement

Základní rozhraní API elementů ve třídách WPF

Oba UIElement a ContentElement jsou odvozeny z DependencyObject, přes poněkud odlišné cesty. Rozdělení na této úrovni se zabývá tím, jak se UIElementContentElement používá nebo používá v uživatelském rozhraní a k jakému účelu slouží v aplikaci. UIElementVisual také ve své hierarchii tříd, což je třída, která zveřejňuje podporu grafiky nižší úrovně, která je základem Windows Presentation Foundation (WPF). Visual poskytuje vykreslovací architekturu definováním nezávislých obdélníkových oblastí obrazovky. V praxi je určena pro prvky, UIElement které budou podporovat větší objektový model, jsou určeny k vykreslení a rozložení do oblastí, které lze popsat jako obdélníkové oblasti obrazovky a kde con režim stanu l je záměrně otevřenější, aby bylo možné různé kombinace prvků. ContentElement není odvozen z Visual; jeho model je, že ContentElement by byl spotřebován něčím jiným, například čtenářem nebo prohlížečem, který by pak interpretoval prvky a vytvořil kompletní Visual pro windows Presentation Foundation (WPF), aby je mohl využívat. Některé UIElement třídy mají být hostiteli obsahu: poskytují hostování a vykreslování pro jednu nebo více ContentElement tříd (DocumentViewer je příkladem takové třídy). ContentElement se používá jako základní třída pro prvky s poněkud menšími objektovými modely a tím více řeší text, informace nebo obsah dokumentu, který může být hostovaný v rámci UIElement.

Úroveň architektury a základní úroveň

UIElement slouží jako základní třída pro FrameworkElement, a ContentElement slouží jako základní třída pro FrameworkContentElement. Důvodem této další úrovně tříd je podpora základní úrovně WPF, která je oddělená od úrovně architektury WPF, s touto divizí také v tom, jak jsou rozhraní API rozdělena mezi sestavení PresentationCore a PresentationFramework. Úroveň architektury WPF představuje ucelenější řešení pro základní potřeby aplikací, včetně implementace správce rozložení pro prezentaci. Základní úroveň WPF poskytuje způsob, jak používat většinu WPF, aniž byste museli brát režii dalšího sestavení. Rozdíl mezi těmito úrovněmi velmi zřídka záleží na nejběžnějších scénářích vývoje aplikací, a obecně byste měli uvažovat o rozhraníCH API WPF jako celku, a nemusíte se zabývat rozdílem mezi úrovní architektury WPF a základní úrovní WPF. Možná budete muset vědět o rozdílech na úrovni, pokud se návrh vaší aplikace rozhodne nahradit značné množství funkcí architektury WPF, například pokud vaše celkové řešení již má své vlastní implementace složení a rozložení uživatelského rozhraní.

Výběr prvku, ze kterého se má odvodit

Nejpraktičtější způsob, jak vytvořit vlastní třídu, která rozšiřuje WPF, je odvození z jedné z tříd WPF, kde získáte co nejvíce požadované funkce prostřednictvím stávající hierarchie tříd. Tato část obsahuje seznam funkcí, které jsou součástí tří z nejdůležitějších tříd prvků, které vám pomůžou rozhodnout, ze které třídy se mají dědit.

Pokud implementujete ovládací prvek, což je skutečně jeden z nejčastějších důvodů pro odvození z třídy WPF, pravděpodobně chcete odvodit z třídy, která je praktická kontrola, základní třída ovládacího prvku nebo alespoň ze Control základní třídy. Některé pokyny a praktické příklady najdete v tématu Přehled vytváření ovládacích prvků.

Pokud nevytvoříte ovládací prvek a potřebujete odvodit z třídy, která je vyšší v hierarchii, jsou následující části určeny jako vodítko pro to, jaké vlastnosti jsou definovány v každé základní třídě elementu.

Pokud vytvoříte třídu odvozenou z DependencyObject, zdědíte následující funkce:

  • GetValue a SetValue podporu a obecnou podporu systému vlastností.

  • Schopnost používat vlastnosti závislostí a připojené vlastnosti, které jsou implementovány jako vlastnosti závislosti.

Pokud vytvoříte třídu odvozenou z UIElement, dědíte následující funkce kromě toho, které poskytuje DependencyObject:

  • Základní podpora animovaných hodnot vlastností Další informace najdete v přehledu animace.

  • Základní podpora vstupních událostí a podpora příkazů Další informace najdete v tématu Přehled vstupu a Přehled příkazů.

  • Virtuální metody, které je možné přepsat, aby poskytovaly informace systému rozložení.

Pokud vytvoříte třídu odvozenou z FrameworkElement, dědíte následující funkce kromě toho, které poskytuje UIElement:

  • Podpora stylů a scénářů Další informace najdete v tématu Style Přehled scénářů.

  • Podpora datových vazeb Další informace najdete v tématu Přehled datových vazeb.

  • Podpora dynamických odkazů na prostředky Další informace najdete v tématu Prostředky XAML.

  • Podpora dědičnosti hodnot vlastností a další příznaky v metadatech, které pomáhají hlásit podmínky o vlastnostech pro služby architektury, jako jsou datové vazby, styly nebo implementace architektury rozložení. Další informace naleznete v tématu Metadata vlastností architektury.

  • Koncept logického stromu Další informace naleznete v tématu Stromy ve WPF.

  • Podpora praktické implementace systému rozložení na úrovni architektury WPF, včetně OnPropertyChanged přepsání, které může detekovat změny vlastností, které ovlivňují rozložení.

Pokud vytvoříte třídu odvozenou z ContentElement, dědíte následující funkce kromě toho, které poskytuje DependencyObject:

  • Podpora animací Další informace najdete v přehledu animace.

  • Základní podpora vstupních událostí a podpora příkazů Další informace najdete v tématu Přehled vstupu a Přehled příkazů.

Pokud vytvoříte třídu, která je odvozena z FrameworkContentElement, získáte následující funkce kromě toho, které poskytuje ContentElement:

  • Podpora stylů a scénářů Další informace najdete v tématu Style a přehled animace.

  • Podpora datových vazeb Další informace najdete v tématu Přehled datových vazeb.

  • Podpora dynamických odkazů na prostředky Další informace najdete v tématu Prostředky XAML.

  • Podpora dědičnosti hodnot vlastností a další příznaky v metadatech, které pomáhají hlásit podmínky o vlastnostech pro služby architektury, jako jsou datové vazby, styly nebo implementace architektury rozložení. Další informace naleznete v tématu Metadata vlastností architektury.

  • Nedědíte přístup k úpravám systému rozložení (například ArrangeOverride). Implementace systému rozložení jsou k dispozici pouze na FrameworkElement. Zdědíte OnPropertyChanged však přepsání, které může detekovat změny vlastností, které ovlivňují rozložení, a hlásit je všem hostitelům obsahu.

Kon režim stanu ls jsou zdokumentované pro různé třídy. Con režim stanu l pro třídu je jedním z možných faktorů, který byste měli zvážit, pokud chcete najít odpovídající třídu, ze které má být odvozena. Další informace naleznete v tématu WPF Content Model.

Další základní třídy

Dispatcherobject

DispatcherObject poskytuje podporu pro model vláken WPF a umožňuje všechny objekty vytvořené pro aplikace WPF přidružené k Dispatcher. I v případě, že neodvozujete z UIElement, DependencyObjectnebo Visual, byste měli zvážit odvození z DispatcherObject , aby bylo možné získat podporu tohoto modelu vláken. Další informace naleznete v tématu Model threading.

Vizuální prvek

Visual implementuje koncept 2D objektu, který obecně vyžaduje vizuální prezentaci v zhruba obdélníkové oblasti. Skutečné vykreslování se Visual provádí v jiných třídách (není samostatné), ale Visual třída poskytuje známý typ, který používá vykreslovací procesy na různých úrovních. Visual implementuje testování hitů, ale nezpřístupňuje události, které hlásí pozitivní výsledky testování (jsou v UIElement). Další informace naleznete v tématu Programování vizuální vrstvy.

Freezable

Freezable Simuluje neměnnost v proměnlivém objektu tím, že poskytuje prostředky pro generování kopií objektu, pokud je neměnný objekt vyžadován nebo požadovaná z důvodů výkonu. Typ Freezable poskytuje společný základ pro určité grafické prvky, jako jsou geometrie a štětce, stejně jako animace. Zejména není Visual; Freezable může obsahovat vlastnosti, které se stanou dílčími vlastnostmi při Freezable použití k vyplnění hodnoty vlastnosti jiného objektu, a tyto dílčí vlastnosti mohou ovlivnit vykreslování. Další informace naleznete v tématu Zamrznutelné objekty Přehled.

Animatable

Animatable je odvozená Freezable třída, která konkrétně přidává animační vrstvu ovládací vrstvy a některé členy nástroje, aby v současné době animované vlastnosti lze odlišit od nonanimated vlastnosti.

Ctrl

Control je určená základní třída pro typ objektu, který se v závislosti na technologii označuje jako ovládací prvek nebo komponenta. Obecně platí, že třídy ovládacích prvků WPF jsou třídy, které buď přímo představují ovládací prvek uživatelského rozhraní, nebo se úzce účastní složení řízení. Primární funkce, která umožňuje, Control řídí šablonování.

Viz také