Übersicht über BasiselementeBase Elements Overview

Ein hoher Prozentsatz der Klassen in Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) wird von vier Klassen abgeleitet, die in der SDK-Dokumentation häufig als Basiselement Klassen bezeichnet werden.A high percentage of classes in Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) are derived from four classes which are commonly referred to in the SDK documentation as the base element classes. Diese Klassen sind UIElement, FrameworkElement, ContentElementund FrameworkContentElement.These classes are UIElement, FrameworkElement, ContentElement, and FrameworkContentElement. Die DependencyObject Klasse ist auch verknüpft, da es sich um eine allgemeine Basisklasse von UIElement und ContentElementThe DependencyObject class is also related, because it is a common base class of both UIElement and ContentElement

Basiselement-APIs in WPF-KlassenBase Element APIs in WPF Classes

Sowohl UIElement als auch ContentElement werden durch etwas andere Wege von DependencyObjectabgeleitet.Both UIElement and ContentElement are derived from DependencyObject, through somewhat different pathways. Die Aufteilung auf dieser Ebene befasst sich damit, wie ein UIElement oder ContentElement auf einer Benutzeroberfläche verwendet wird und welchen Zweck Sie in einer Anwendung haben.The split at this level deals with how a UIElement or ContentElement are used in a user interface and what purpose they serve in an application. UIElement verfügt auch über Visual in der-Klassenhierarchie, bei der es sich um eine Klasse handelt, die die Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)Unterstützung auf niedrigerer Ebene verfügbar machtUIElement also has Visual in its class hierarchy, which is a class that exposes the lower-level graphics support underlying the Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF). Visual bietet ein Renderingframework, indem unabhängige rechteckige Bildschirmbereiche definiert werden.Visual provides a rendering framework by defining independent rectangular screen regions. In der Praxis ist UIElement für Elemente, die ein größeres Objektmodell unterstützen, für das Rendering und Layout in Regionen vorgesehen, die als rechteckige Bildschirmbereiche beschrieben werden können, und wo das Inhalts Modell absichtlich offener ist, um unterschiedliche Kombinationen zuzulassen. von-Elementen.In practice, UIElement is for elements that will support a larger object model, are intended to render and layout into regions that can be described as rectangular screen regions, and where the content model is deliberately more open, to allow different combinations of elements. ContentElement wird nicht von Visualabgeleitet; das zugehörige Modell ist, dass ein ContentElement von einem anderen verbraucht wird, z. b. einem Reader oder Viewer, der dann die Elemente interpretiert und die gesamte Visual erzeugt, die Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) verarbeiten soll.ContentElement does not derive from Visual; its model is that a ContentElement would be consumed by something else, such as a reader or viewer that would then interpret the elements and produce the complete Visual for Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) to consume. Bestimmte UIElement Klassen sind als Inhalts Hosts gedacht: Sie stellen das Hosting und Rendering für eine oder mehrere ContentElement Klassen bereit (DocumentViewer ist ein Beispiel für eine solche Klasse).Certain UIElement classes are intended to be content hosts: they provide the hosting and rendering for one or more ContentElement classes (DocumentViewer is an example of such a class). ContentElement wird als Basisklasse für Elemente mit etwas kleineren Objekt Modellen verwendet und adressiert die Text-, Informations-oder Dokumentinhalte, die in einem UIElementgehostet werden können.ContentElement is used as base class for elements with somewhat smaller object models and that more address the text, information, or document content that might be hosted within a UIElement.

Frameworkebene und KernebeneFramework-Level and Core-Level

UIElement fungiert als Basisklasse für FrameworkElement, und ContentElement fungiert als Basisklasse für FrameworkContentElement.UIElement serves as the base class for FrameworkElement, and ContentElement serves as the base class for FrameworkContentElement. Der Grund für diese nächste Ebene von Klassen besteht darin, eine WPF-Kern Ebene zu unterstützen, die von der WPF-Frameworkebene getrennt ist. diese Division besteht auch darin, wie die APIs zwischen den Assemblys PresentationCore und presentationframework aufgeteilt werden.The reason for this next level of classes is to support a WPF core level that is separate from a WPF framework level, with this division also existing in how the APIs are divided between the PresentationCore and PresentationFramework assemblies. Die WPF-Frameworkebene stellt eine vollständigere Lösung für grundlegende Anwendungsanforderungen dar, einschließlich die Implementierung des Layout-Managers für die Darstellung.The WPF framework level presents a more complete solution for basic application needs, including the implementation of the layout manager for presentation. Die WPF-Kernebene bietet eine Möglichkeit, mehr von WPFWPF zu verwenden, ohne den Mehraufwand der zusätzlichen Assembly.The WPF core level provides a way to use much of WPFWPF without taking the overhead of the additional assembly. Der Unterschied zwischen diesen Ebenen ist für die meisten typischen Anwendungs Entwicklungsszenarien sehr selten wichtig. im Allgemeinen sollten Sie sich die WPFWPF-APIs als Ganzes vorstellen und sich nicht mit dem Unterschied zwischen der WPF-Frameworkebene und der WPF-kernstufe befassen.The distinction between these levels very rarely matters for most typical application development scenarios, and in general you should think of the WPFWPF APIs as a whole and not concern yourself with the difference between WPF framework level and WPF core level. Sie müssen möglicherweise über die Unterschiede der Ebenen Bescheid wissen, wenn Ihr Anwendungsentwurf eine Vielzahl von Funktionen der WPF-Frameworkebene ersetzt, z.B. wenn Ihre allgemeine Projektmappe schon über eigene Implementierungen der Benutzeroberfläche (User Interface, UI)user interface (UI)-Zusammenstellung und des -Layouts verfügt.You might need to know about the level distinctions if your application design chooses to replace substantial quantities of WPF framework level functionality, for instance if your overall solution already has its own implementations of Benutzeroberfläche (User Interface, UI)user interface (UI) composition and layout.

Auswählen des Elements für die AbleitungChoosing Which Element to Derive From

Der praktischste Weg, eine benutzerdefinierte Klasse zu erstellen, die WPFWPF erweitert, ist durch Ableiten von einer der WPFWPF-Klassen, wobei Sie so viel Funktionalität wie möglich durch die vorhandene Klassenhierarchie erhalten.The most practical way to create a custom class that extends WPFWPF is by deriving from one of the WPFWPF classes where you get as much as possible of your desired functionality through the existing class hierarchy. In diesem Abschnitt sind die Funktionen aufgeführt, die mit drei der wichtigsten Elementklassen geliefert werden, um Ihnen bei der Entscheidung zu helfen, von welcher Klasse geerbt werden soll.This section lists the functionality that comes with three of the most important element classes to help you decide which class to inherit from.

Wenn Sie ein Steuerelement implementieren, bei dem es sich um einen der gängigsten Gründe für das Ableiten von einer WPFWPF Klasse handelt, sollten Sie wahrscheinlich von einer Klasse ableiten, die ein praktisches Steuerelement, eine Basisklasse der Steuerelement Familie oder zumindest aus der Control Basisklasse ist.If you are implementing a control, which is really one of the more common reasons for deriving from a WPFWPF class, you probably want to derive from a class that is a practical control, a control family base class, or at least from the Control base class. Einige Leitfäden und praktische Beispiele finden Sie unter Übersicht über das Erstellen von Steuerelementen.For some guidance and practical examples, see Control Authoring Overview.

Wenn Sie kein Steuerelement erstellen und von einer Klasse ableiten müssen, die in der Hierarchie höher gestellt ist, sollen Ihnen die folgenden Abschnitte als Leitfaden für die Eigenschaften dienen, die in jeder Basiselementklasse definiert sind.If you are not creating a control and need to derive from a class that is higher in the hierarchy, the following sections are intended as a guide for what characteristics are defined in each base element class.

Wenn Sie eine Klasse erstellen, die von DependencyObjectabgeleitet ist, erben Sie die folgende Funktionalität:If you create a class that derives from DependencyObject, you inherit the following functionality:

  • Unterstützung für GetValue und SetValue sowie allgemeine Eigenschaften Systemunterstützung.GetValue and SetValue support, and general property system support.

  • Fähigkeit zum Verwenden von Abhängigkeitseigenschaften und angefügten Eigenschaften, die als Abhängigkeitseigenschaften implementiert sindAbility to use dependency properties and attached properties that are implemented as dependency properties.

Wenn Sie eine Klasse erstellen, die von UIElementabgeleitet ist, erben Sie zusätzlich zu den von DependencyObjectbereitgestellten Funktionen die folgenden Funktionen:If you create a class that derives from UIElement, you inherit the following functionality in addition to that provided by DependencyObject:

  • Grundlegende Unterstützung für animierte Eigenschaftswerte.Basic support for animated property values. Weitere Informationen finden Sie unter Übersicht über Animation.For more information, see Animation Overview.

  • Grundlegende Unterstützung für Eingabeereignisse und Unterstützung für Befehle.Basic input event support, and commanding support. Weitere Informationen finden Sie unter Übersicht über die Eingabe und Befehlsübersicht.For more information, see Input Overview and Commanding Overview.

  • Virtuelle Methoden, die überschrieben werden können, um Informationen für ein Layoutsystem bereitzustellen.Virtual methods that can be overridden to provide information to a layout system.

Wenn Sie eine Klasse erstellen, die von FrameworkElementabgeleitet ist, erben Sie zusätzlich zu den von UIElementbereitgestellten Funktionen die folgenden Funktionen:If you create a class that derives from FrameworkElement, you inherit the following functionality in addition to that provided by UIElement:

  • Unterstützung für Formatierung und Storyboards.Support for styling and storyboards. Weitere Informationen finden Sie unter Übersicht über Style und Storyboards.For more information, see Style and Storyboards Overview.

  • Unterstützung für die Datenbindung.Support for data binding. Weitere Informationen finden Sie in der Übersicht über die Datenbindung.For more information, see Data Binding Overview.

  • Unterstützung für dynamische Ressourcenverweise.Support for dynamic resource references. Weitere Informationen finden Sie unter XAML-Ressourcen.For more information, see XAML Resources.

  • Unterstützung für die Eigenschaftswertvererbung und andere Flags in den Metadaten, die Ihnen beim Melden von Bedingungen über Eigenschaften für Frameworkdienste helfen, z.B. Datenbindung, Stile oder die Frameworkimplementierung des Layouts.Property value inheritance support, and other flags in the metadata that help report conditions about properties to framework services such as data binding, styles, or the framework implementation of layout. Weitere Informationen finden Sie unter Framework-Eigenschaftenmetadaten.For more information, see Framework Property Metadata.

  • Das Konzept der logischen Struktur.The concept of the logical tree. Weitere Informationen finden Sie unter Strukturen in WPF.For more information, see Trees in WPF.

  • Unterstützung für die praktische Implementierung der WPF-Frameworkebene des Layoutsystems, einschließlich einer OnPropertyChanged außer Kraft setzung, die Änderungen an Eigenschaften erkennen kann, die das Layout beeinflussen.Support for the practical WPF framework-level implementation of the layout system, including an OnPropertyChanged override that can detect changes to properties that influence layout.

Wenn Sie eine Klasse erstellen, die von ContentElementabgeleitet ist, erben Sie zusätzlich zu den von DependencyObjectbereitgestellten Funktionen die folgenden Funktionen:If you create a class that derives from ContentElement, you inherit the following functionality in addition to that provided by DependencyObject:

Wenn Sie eine Klasse erstellen, die von FrameworkContentElementabgeleitet ist, erhalten Sie zusätzlich zu den Funktionen, die von ContentElementbereitgestellt werden, die folgenden Funktionen:If you create a class that derives from FrameworkContentElement, you get the following functionality in addition to that provided by ContentElement:

  • Unterstützung für Formatierung und Storyboards.Support for styling and storyboards. Weitere Informationen finden Sie unter Übersicht überStyle und Animationen.For more information, see Style and Animation Overview.

  • Unterstützung für die Datenbindung.Support for data binding. Weitere Informationen finden Sie in der Übersicht über die Datenbindung.For more information, see Data Binding Overview.

  • Unterstützung für dynamische Ressourcenverweise.Support for dynamic resource references. Weitere Informationen finden Sie unter XAML-Ressourcen.For more information, see XAML Resources.

  • Unterstützung für die Eigenschaftswertvererbung und andere Flags in den Metadaten, die Ihnen beim Melden von Bedingungen über Eigenschaften für Frameworkdienste helfen, z.B. Datenbindung, Stile oder die Frameworkimplementierung des Layouts.Property value inheritance support, and other flags in the metadata that help report conditions about properties to framework services like data binding, styles, or the framework implementation of layout. Weitere Informationen finden Sie unter Framework-Eigenschaftenmetadaten.For more information, see Framework Property Metadata.

  • Sie erben nicht den Zugriff auf Layoutsystemänderungen (z. b. ArrangeOverride).You do not inherit access to layout system modifications (such as ArrangeOverride). Layoutsystemimplementierungen sind nur auf FrameworkElementverfügbar.Layout system implementations are only available on FrameworkElement. Allerdings erben Sie eine OnPropertyChanged außer Kraft setzung, die Änderungen an Eigenschaften erkennen kann, die das Layout beeinflussen, und diese an beliebige Inhalts Hosts melden.However, you inherit an OnPropertyChanged override that can detect changes to properties that influence layout and report these to any content hosts.

Inhaltsmodelle sind für eine Vielzahl von Klassen dokumentiert.Content models are documented for a variety of classes. Das Inhaltsmodell für eine Klasse ist ein möglicher Faktor, den Sie berücksichtigen sollten, wenn Sie eine entsprechende Klasse finden möchten, von der Sie ableiten möchten.The content model for a class is one possible factor you should consider if you want to find an appropriate class to derive from. Weitere Informationen finden Sie unter WPF-Inhaltsmodell.For more information, see WPF Content Model.

Andere BasisklassenOther Base Classes

DispatcherObjectDispatcherObject

DispatcherObject bietet Unterstützung für das WPFWPF Threading Modell und ermöglicht, dass alle Objekte, die für WPFWPF Anwendungen erstellt wurden, einem Dispatcherzugeordnet werden.DispatcherObject provides support for the WPFWPF threading model and enables all objects created for WPFWPF applications to be associated with a Dispatcher. Auch wenn Sie nicht von UIElement, DependencyObjectoder Visualableiten, sollten Sie die Ableitung von DispatcherObject in Erwägung ziehen, um dieses Threading Modell zu unterstützen.Even if you do not derive from UIElement, DependencyObject, or Visual, you should consider deriving from DispatcherObject in order to get this threading model support. Weitere Informationen finden Sie unter Threading-Modell.For more information, see Threading Model.

Grafisches ElementVisual

Visual implementiert das Konzept eines 2D-Objekts, das in der Regel visuelle Darstellung in einem ungefähr rechteckigen Bereich erfordert.Visual implements the concept of a 2D object that generally requires visual presentation in a roughly rectangular region. Das tatsächliche Rendering einer Visual erfolgt in anderen Klassen (es ist nicht eigenständig), aber die Visual Klasse stellt einen bekannten Typ bereit, der von Renderingprozessen auf unterschiedlichen Ebenen verwendet wird.The actual rendering of a Visual happens in other classes (it is not self-contained), but the Visual class provides a known type that is used by rendering processes at various levels. Visual implementiert Treffer Tests, macht jedoch keine Ereignisse verfügbar, die positive Treffer Tests melden (diese sind in UIElement).Visual implements hit testing, but it does not expose events that report hit-testing positives (these are in UIElement). Weitere Informationen finden Sie unter Programmierung auf visueller Ebene.For more information, see Visual Layer Programming.

Freezable-ObjektFreezable

Freezable simuliert die Unveränderlichkeit in einem änderbaren Objekt, indem die Mittel zum Generieren von Kopien des Objekts bereitgestellt werden, wenn ein unveränderliches Objekt erforderlich oder aus Leistungsgründen gewünscht ist.Freezable simulates immutability in a mutable object by providing the means to generate copies of the object when an immutable object is required or desired for performance reasons. Der Freezable Typ bietet eine allgemeine Grundlage für bestimmte Grafikelemente, wie z. b. Geometrien und Pinsel, sowie Animationen.The Freezable type provides a common basis for certain graphics elements such as geometries and brushes, as well as animations. Eine Freezable ist insbesondere kein Visual. Es kann Eigenschaften enthalten, die unter Eigenschaften werden, wenn die Freezable angewendet wird, um einen Eigenschafts Wert eines anderen Objekts auszufüllen, und diese unter Eigenschaften können sich auf das Rendering auswirken.Notably, a Freezable is not a Visual; it can hold properties that become subproperties when the Freezable is applied to fill a property value of another object, and those subproperties might affect rendering. Weitere Informationen finden Sie unter der Übersicht über Freezable-Objekte.For more information, see Freezable Objects Overview.

Animatable

Animatable ist eine Freezable abgeleitete Klasse, die speziell die Animations Steuerungsebene und einige hilfsprogrammmember hinzufügt, sodass derzeit animierte Eigenschaften von nicht animierten Eigenschaften unterschieden werden können.Animatable is a Freezable derived class that specifically adds the animation control layer and some utility members so that currently animated properties can be distinguished from nonanimated properties.

SteuerelementControl

Control ist die beabsichtigte Basisklasse für den Objekttyp, der abhängig von der Technologie variron als Steuerelement oder Komponente bezeichnet wird.Control is the intended base class for the type of object that is variously termed a control or component, depending on the technology. Im allgemeinen sind WPFWPF-Steuerelementklassen Klassen, die entweder direkt ein UI-Steuerelement darstellen oder in der Zusammenstellung der Steuerelemente eng beteiligt sind.In general, WPFWPF control classes are classes that either directly represent a UI control or participate closely in control composition. Die Hauptfunktion, die Control ermöglicht, ist die Steuerung von Vorlagen.The primary functionality that Control enables is control templating.

Siehe auchSee also