Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Windows Presentation Foundation (WPF) osztályainak nagy százaléka négy osztályból származik, amelyeket az SDK dokumentációja alapelemosztályként gyakran hivatkozik. Ezek az osztályok a következőkUIElement: , FrameworkElementContentElementés FrameworkContentElement. Az DependencyObject osztály szintén kapcsolódik, mert közös alaposztálya mind a UIElement-nek, mind a ContentElement-nek.
Alapelem API-k WPF-osztályokban
Mindkettő UIElement és ContentElementDependencyObject-ből származik, kissé eltérő utakon keresztül. Az ezen a szinten történő felosztás azt határozza meg, hogyan UIElement és ContentElement használják a felhasználói felületen, és hogy milyen célt szolgálnak egy alkalmazásban. UIElement szintén rendelkezik Visual az osztályhierarchiájában, amely egy olyan osztály, ami bemutatja a Windows Presentation Foundation (WPF) alapjául szolgáló alacsonyabb szintű grafikus támogatást. Visual renderelési keretrendszert biztosít független téglalap alakú képernyőterületek definiálásával. A gyakorlatban olyan elemekre vonatkozik, UIElement amelyek támogatják a nagyobb objektummodellt, és olyan régiókba kívánnak renderelni és elrendezést létrehozni, amelyek téglalap alakú képernyőrégiókként írhatók le, és ahol a tartalommodell szándékosan nyitottabb, hogy lehetővé tegyék az elemek különböző kombinációit. ContentElement nem származik Visual-ből; a modellje az, hogy egy ContentElement elemet valami más használna fel, például egy olvasó vagy megjelenítő, amely ezután értelmezi az elemeket, és elkészíti a teljes Visual-t a Windows Presentation Foundation (WPF) számára. Egyes UIElement osztályok tartalomgazdaként szolgálnak: egy vagy több ContentElement osztály üzemeltetését és renderelését biztosítják (DocumentViewer ez egy ilyen osztály példája). ContentElement alaposztályként szolgál a valamivel kisebb objektummodelleket tartalmazó elemekhez, és jobban kezeli azokat a szövegeket, információkat vagy dokumentumtartalmakat, amelyek egy UIElementadott területen belül lehetnek tárolva.
Framework-Level és Core-Level
UIElement alaposztályként szolgál FrameworkElement számára, és ContentElement alaposztályként szolgál FrameworkContentElement számára. Ennek a következő osztályszintnek az az oka, hogy támogatja a WPF-keretrendszerszinttől független WPF-magszintet, és ez az osztás a PresentationCore és a PresentationFramework szerelvények közötti API-k megosztásában is meg van osztva. A WPF-keretrendszer szintje teljesebb megoldást nyújt az alapvető alkalmazásigényekhez, beleértve az elrendezéskezelő implementálását a bemutatóhoz. A WPF magszintje lehetővé teszi a WPF sok funkciójának használatát anélkül, hogy átvállalnánk a kiegészítő összetevő többletterhelését. A szintek közötti különbség nagyon ritkán számít a legtöbb tipikus alkalmazásfejlesztési forgatókönyv esetében, és általában a WPF API-k egészére kell gondolnia, és nem kell foglalkoznia a WPF keretrendszerszint és a WPF magszint közötti különbséggel. Előfordulhat, hogy tudnia kell a szintkülönbségekről, ha az alkalmazás kialakítása jelentős mennyiségű WPF-keretrendszerszintű funkció lecserélése mellett dönt, például ha a teljes megoldás már rendelkezik saját felhasználói felületi (felhasználói felületi) összetétellel és elrendezéssel.
Annak kiválasztása, hogy melyik elemből kell származnia
A WPF-et kiterjesztő egyéni osztály létrehozásának legpraktikusabb módja az, ha az egyik WPF-osztályból származik, ahol a lehető legnagyobb mértékben kihasználhatja a kívánt funkciókat a meglévő osztályhierarchián keresztül. Ez a szakasz azokat a funkciókat sorolja fel, amelyek közül három a legfontosabb elemosztályokból áll, amelyek segítenek eldönteni, hogy melyik osztálytól örököljön.
Ha olyan vezérlőt implementál, ami valójában az egyik leggyakoribb ok arra, hogy egy WPF-osztályból származzon, valószínűleg egy gyakorlati vezérlőosztályból, egy vezérlőcsalád alaposztályából vagy legalább az Control alaposztályból szeretne származni. További útmutatásért és gyakorlati példákért tekintse meg a vezérlés létrehozásának áttekintése című részt.
Ha nem hoz létre vezérlőt, és a hierarchiában magasabb szintű osztályból kell származnia, a következő szakaszok útmutatóként szolgálnak az egyes alapelemosztályok jellemzőinek meghatározásához.
Ha létrehoz egy osztályt, amelyből DependencyObjectszármazik, a következő funkciókat örökli:
GetValue és SetValue támogatás, valamint az általános tulajdonságrendszer-támogatás.
Függőségi tulajdonságok és csatolt tulajdonságok függőségi tulajdonságokként való használatának képessége.
Ha olyan osztályt hoz létre, ami a UIElement-ból származik, akkor az alábbi funkcionalitást örökli, ami a DependencyObject által nyújtott képességeken felül van.
Az animált tulajdonságértékek alapszintű támogatása. További információ: Animáció áttekintése.
Alapszintű bemeneti eseménytámogatás és parancsok támogatása. További információ: Bemenet áttekintése és parancsok áttekintése.
Olyan virtuális módszerek, amelyek felülírhatók az elrendezési rendszer információinak megadásához.
Ha olyan osztályt hoz létre, ami a FrameworkElement-ból származik, akkor az alábbi funkcionalitást örökli, ami a UIElement által nyújtott képességeken felül van.
Styling és storyboards támogatása. További információt a Style talál.
Az adatkötés támogatása. További információ: Adatkötés áttekintése.
Dinamikus erőforráshivatkozások támogatása. További információ: XAML-erőforrások.
A tulajdonságértékek öröklésének támogatása, valamint a metaadatok egyéb jelzői, amelyek segítenek a keretrendszerszolgáltatások tulajdonságaival kapcsolatos feltételek, például adatkötés, stílusok vagy az elrendezés keretrendszer-implementációjának jelentésében. További információ: Keretrendszertulajdonság metaadatai.
A logikai fa fogalma. További információ: Fák a WPF-ben.
Az elrendezési rendszer gyakorlati WPF keretrendszerszintű implementációjának támogatása, beleértve egy olyan felülbírálást OnPropertyChanged, amely képes észlelni az elrendezést befolyásoló tulajdonságok változásait.
Ha olyan osztályt hoz létre, ami a ContentElement-ból származik, akkor az alábbi funkcionalitást örökli, ami a DependencyObject által nyújtott képességeken felül van.
Animációk támogatása. További információ: Animáció áttekintése.
Alapszintű bemeneti eseménytámogatás és parancsok támogatása. További információ: Bemenet áttekintése és parancsok áttekintése.
Ha létrehoz egy olyan osztályt, amelyből FrameworkContentElementszármazik, a következő funkciókat is megkapja a következő funkciók mellett, amelyeket a következő ContentElementbiztosít:
Styling és storyboards támogatása. További információkért tekintse meg Style és az animáció áttekintését.
Az adatkötés támogatása. További információ: Adatkötés áttekintése.
Dinamikus erőforráshivatkozások támogatása. További információ: XAML-erőforrások.
A tulajdonságértékek öröklésének támogatása, valamint a metaadatok egyéb jelzői, amelyek segítenek a keretrendszerszolgáltatások tulajdonságaival kapcsolatos feltételek, például az adatkötés, a stílusok vagy az elrendezés keretrendszer-implementációjának jelentésében. További információ: Keretrendszertulajdonság metaadatai.
Az elrendezési rendszer módosításaihoz (például ArrangeOverride) nem örökli a hozzáférést. Az elrendezési rendszer implementációi csak a következőn FrameworkElementérhetők el: . Azonban örökölhet egy OnPropertyChanged felülbírálást, amely képes észlelni azokat a tulajdonságmódosításokat, amelyek befolyásolják az elrendezést, és jelenti ezeket a tartalomgazdáknak.
A tartalommodellek számos osztályhoz vannak dokumentálva. Az osztály tartalommodellje az egyik lehetséges tényező, amelyet figyelembe kell vennie, ha megfelelő osztályt szeretne létrehozni. További információ: WPF-tartalommodell.
Egyéb alaposztályok
DispatcherObject
DispatcherObject támogatja a WPF szálmodellt, és lehetővé teszi a WPF-alkalmazásokhoz létrehozott összes objektum társítását egy Dispatcher. Még akkor is érdemes megfontolni a UIElement-ből való származtatást, ha nem származik DependencyObject, Visual, vagy DispatcherObject-ből, hogy megkapja a szálkezelési modell támogatását. További információért lásd Szálmodell.
Vizuális
Visual Megvalósítja egy olyan 2D objektum fogalmát, amely általában egy nagyjából négyszögletes régióban való vizuális megjelenítést igényel. A tényleges renderelés Visual más osztályokban történik (ez nem önálló), de az Visual osztály egy ismert típust biztosít, amelyet különböző szinteken történő renderelés során használnak. Visual találattesztelést valósít meg, de nem teszi közzé azokat az eseményeket, amelyek a találattesztelés pozitívjait jelentik (ezek a következők: UIElement). További információ: Visual Layer Programming.
Fagyasztható
Freezable a megváltoztathatatlanságot szimulálja egy mutable objektumban azáltal, hogy lehetővé teszi az objektum másolatainak előállítását, ha teljesítménybeli okokból nem módosítható objektumra van szükség vagy szükség van. A Freezable típus általános alapot biztosít bizonyos grafikus elemekhez, például geometriákhoz és ecsetekhez, valamint animációkhoz. Nevezetesen az a Freezable nem egy Visual; olyan tulajdonságokat tartalmazhat, amelyek altulajdonságokká válhatnak, amikor egy Freezable másik objektum tulajdonságértékének kitöltésére alkalmazzák, és ezek az altulajdonságok hatással lehetnek a renderelésre. További információ: Fagyasztható objektumok áttekintése.
Animatable egy Freezable származtatott osztály, amely kifejezetten hozzáadja az animációs vezérlőréteget és néhány segédprogramtagot, hogy a jelenleg animált tulajdonságok megkülönböztethetők legyenek a nem animált tulajdonságoktól.
Vezérlő
Control az objektum típusának tervezett alaposztálya, amelyet különböző néven vezérlőnek vagy összetevőnek neveznek a technológiától függően. A WPF-vezérlőosztályok általában olyan osztályok, amelyek közvetlenül egy felhasználói felület vezérlőit jelölik, vagy szorosan részt vesznek a vezérlés összetételében. Az elsődleges funkció, amelyet a Control lehetővé tesz, a vezérlősablonozás.
Lásd még
.NET Desktop feedback