Cenni preliminari sugli elementi di baseBase Elements Overview

Una percentuale elevata di classi in Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) deriva da quattro classi, comunemente definite nella documentazione dell'SDK come classi di elementi di base.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. Queste classi sono UIElement, FrameworkElement, ContentElemente FrameworkContentElement.These classes are UIElement, FrameworkElement, ContentElement, and FrameworkContentElement. Anche la classe DependencyObject è correlata, perché è una classe di base comune sia UIElement che ContentElementThe DependencyObject class is also related, because it is a common base class of both UIElement and ContentElement

API degli elementi di base nelle classi WPFBase Element APIs in WPF Classes

Sia UIElement che ContentElement derivano da DependencyObject, tramite percorsi leggermente diversi.Both UIElement and ContentElement are derived from DependencyObject, through somewhat different pathways. La suddivisione a questo livello riguarda il modo in cui un UIElement o un ContentElement vengono usati in un'interfaccia utente e lo scopo che svolgono in un'applicazione.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 dispone anche di Visual nella relativa gerarchia di classi, ovvero una classe che espone il supporto della grafica di livello inferiore sottostante al Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF).UIElement 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 fornisce un Framework di rendering definendo aree della schermata rettangolari indipendenti.Visual provides a rendering framework by defining independent rectangular screen regions. In pratica, UIElement è per gli elementi che supporteranno un modello a oggetti più grande, sono progettati per il rendering e il layout in aree che possono essere descritte come aree della schermata rettangolare e in cui il modello di contenuto è intenzionalmente più aperto, per consentire combinazioni diverse di elementi.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 non deriva da Visual; il modello è che un ContentElement verrebbe utilizzato da un altro elemento, ad esempio un Reader o un visualizzatore che interpreterà quindi gli elementi e produrrà la Visual completa per l'utilizzo da parte di Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF).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. Alcune classi di UIElement sono destinate a essere host di contenuto: forniscono l'hosting e il rendering per una o più classi ContentElement (DocumentViewer è un esempio di tale classe).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 viene utilizzata come classe di base per gli elementi con modelli a oggetti più piccoli e che più indirizzano il contenuto del testo, delle informazioni o del documento che potrebbe essere ospitato all'interno di un UIElement.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.

Livello di framework e livello principaleFramework-Level and Core-Level

UIElement funge da classe base per FrameworkElemente ContentElement funge da classe di base per FrameworkContentElement.UIElement serves as the base class for FrameworkElement, and ContentElement serves as the base class for FrameworkContentElement. Il motivo di questo livello di classi successivo è quello di supportare un livello di core WPF separato da un livello di Framework WPF, con questa divisione anche nel modo in cui le API sono divise tra gli assembly PresentationCore e PresentationFramework.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. Il livello di framework WPF offre una soluzione più completa per le necessità di base delle applicazioni, inclusa l'implementazione del gestore di layout per le presentazioni.The WPF framework level presents a more complete solution for basic application needs, including the implementation of the layout manager for presentation. Il livello principale WPF offre una modalità per usare in modo esteso WPFWPF senza l'overhead di assembly aggiuntivo.The WPF core level provides a way to use much of WPFWPF without taking the overhead of the additional assembly. La distinzione tra questi livelli è molto raramente importante per gli scenari di sviluppo di applicazioni più comuni e in generale è opportuno considerare le API WPFWPF nel suo complesso e non preoccuparsi della differenza tra il livello di Framework WPF e il livello di core WPF.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. Può essere necessario conoscere le distinzioni tra i livelli se in un progetto di applicazione si decide di sostituire quantità significative di funzionalità del livello di framework WPF, ad esempio se la soluzione complessiva dispone già di implementazioni personalizzate per la composizione e il layout dell'interfaccia utenteuser interface (UI).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 interfaccia utenteuser interface (UI) composition and layout.

Scelta dell'elemento da cui derivareChoosing Which Element to Derive From

Il modo ottimale per creare una classe personalizzata che estende WPFWPF consiste nel derivare da una delle classi WPFWPF mediante cui si ottiene la massima funzionalità desiderata tramite la gerarchia di classi esistente.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. Questa sezione elenca le funzionalità fornite da tre delle più importanti classi di elementi che consentono di decidere da quale classe ereditare.This section lists the functionality that comes with three of the most important element classes to help you decide which class to inherit from.

Se si implementa un controllo, che è in realtà uno dei motivi più comuni per derivare da una classe di WPFWPF, è probabile che si desideri derivare da una classe che sia un controllo pratico, una classe di base della famiglia di controlli o almeno dalla classe di base Control.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. Per istruzioni ed esempi pratici, vedere Cenni preliminari sulla modifica di controlli.For some guidance and practical examples, see Control Authoring Overview.

Se non si crea un controllo ed è necessario derivare da una classe più elevata nella gerarchia, nelle sezioni seguenti vengono fornite informazioni sulle caratteristiche definite in ogni classe degli elementi di base.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.

Se si crea una classe che deriva da DependencyObject, si ereditano le funzionalità seguenti:If you create a class that derives from DependencyObject, you inherit the following functionality:

  • supporto di GetValue e SetValue e supporto del sistema di proprietà generale.GetValue and SetValue support, and general property system support.

  • Possibilità di utilizzare le proprietà di dipendenza e le proprietà associate implementate come proprietà di dipendenza.Ability to use dependency properties and attached properties that are implemented as dependency properties.

Se si crea una classe che deriva da UIElement, si ereditano le funzionalità seguenti oltre a quelle fornite da DependencyObject:If you create a class that derives from UIElement, you inherit the following functionality in addition to that provided by DependencyObject:

Se si crea una classe che deriva da FrameworkElement, si ereditano le funzionalità seguenti oltre a quelle fornite da UIElement:If you create a class that derives from FrameworkElement, you inherit the following functionality in addition to that provided by UIElement:

  • Supporto per l'uso di stili e storyboard.Support for styling and storyboards. Per ulteriori informazioni, vedere Cenni preliminari sugli storyboarde Style.For more information, see Style and Storyboards Overview.

  • Supporto del data binding.Support for data binding. Per altre informazioni, vedere la panoramica del data binding.For more information, see Data Binding Overview.

  • Supporto per i riferimenti di risorse dinamiche.Support for dynamic resource references. Per altre informazioni, vedere Risorse XAML.For more information, see XAML Resources.

  • Supporto dell'ereditarietà dei valori di proprietà e altri flag nei metadati che agevolano la segnalazione di condizioni relative alle proprietà ai servizi del framework, ad esempio data binding, stili o implementazione del layout del framework.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. Per altre informazioni, vedere Metadati delle proprietà del framework.For more information, see Framework Property Metadata.

  • Concetto di albero logico.The concept of the logical tree. Per altre informazioni, vedere Strutture ad albero in WPF.For more information, see Trees in WPF.

  • Supporto per l'implementazione pratica a livello di Framework WPF del sistema di layout, incluso un override OnPropertyChanged in grado di rilevare le modifiche apportate alle proprietà che influenzano il layout.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.

Se si crea una classe che deriva da ContentElement, si ereditano le funzionalità seguenti oltre a quelle fornite da DependencyObject:If you create a class that derives from ContentElement, you inherit the following functionality in addition to that provided by DependencyObject:

Se si crea una classe che deriva da FrameworkContentElement, si ottengono le funzionalità seguenti, oltre a quelle fornite da ContentElement:If you create a class that derives from FrameworkContentElement, you get the following functionality in addition to that provided by ContentElement:

  • Supporto per l'uso di stili e storyboard.Support for styling and storyboards. Per ulteriori informazioni, vedere Style e Cenni preliminari sull'animazione.For more information, see Style and Animation Overview.

  • Supporto del data binding.Support for data binding. Per altre informazioni, vedere la panoramica del data binding.For more information, see Data Binding Overview.

  • Supporto per i riferimenti di risorse dinamiche.Support for dynamic resource references. Per altre informazioni, vedere Risorse XAML.For more information, see XAML Resources.

  • Supporto dell'ereditarietà dei valori di proprietà e altri flag nei metadati che agevolano la segnalazione di condizioni relative alle proprietà ai servizi del framework, ad esempio data binding, stili o implementazione del layout del framework.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. Per altre informazioni, vedere Metadati delle proprietà del framework.For more information, see Framework Property Metadata.

  • L'accesso alle modifiche apportate al sistema di layout, ad esempio ArrangeOverride, non viene ereditato.You do not inherit access to layout system modifications (such as ArrangeOverride). Le implementazioni del sistema di layout sono disponibili solo in FrameworkElement.Layout system implementations are only available on FrameworkElement. Tuttavia, è possibile ereditare un override OnPropertyChanged in grado di rilevare le modifiche apportate alle proprietà che influenzano il layout e segnalarle a tutti gli host di contenuto.However, you inherit an OnPropertyChanged override that can detect changes to properties that influence layout and report these to any content hosts.

I modelli di contenuto sono documentati per una varietà di classi.Content models are documented for a variety of classes. Il modello di contenuto per una classe è un fattore possibile da considerare per trovare una classe adatta da cui derivare.The content model for a class is one possible factor you should consider if you want to find an appropriate class to derive from. Per altre informazioni, vedere Modello di contenuto WPF.For more information, see WPF Content Model.

Altre classi di baseOther Base Classes

DispatcherObjectDispatcherObject

DispatcherObject fornisce il supporto per il modello di threading WPFWPF e consente a tutti gli oggetti creati per WPFWPF applicazioni di essere associati a una Dispatcher.DispatcherObject provides support for the WPFWPF threading model and enables all objects created for WPFWPF applications to be associated with a Dispatcher. Anche se non si esegue la derivazione da UIElement, DependencyObjecto Visual, è necessario considerare la derivazione da DispatcherObject per ottenere il supporto del modello di Threading.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. Per altre informazioni, vedere Modello di threading.For more information, see Threading Model.

VisualVisual

Visual implementa il concetto di oggetto 2D che in genere richiede la presentazione visiva in un'area approssimativamente rettangolare.Visual implements the concept of a 2D object that generally requires visual presentation in a roughly rectangular region. Il rendering effettivo di un Visual si verifica in altre classi (non è indipendente), ma la classe Visual fornisce un tipo noto che viene usato dai processi di rendering a vari livelli.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 implementa l'hit testing, ma non espone eventi che segnalano positivi di hit testing (si trovano in UIElement).Visual implements hit testing, but it does not expose events that report hit-testing positives (these are in UIElement). Per altre informazioni, vedere Programmazione a livello visivo.For more information, see Visual Layer Programming.

FreezableFreezable

Freezable simula l'immutabilità in un oggetto modificabile fornendo i mezzi per generare copie dell'oggetto quando un oggetto non modificabile è obbligatorio o desiderato per motivi di prestazioni.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. Il tipo di Freezable fornisce una base comune per determinati elementi grafici, ad esempio le geometrie e i pennelli, nonché le animazioni.The Freezable type provides a common basis for certain graphics elements such as geometries and brushes, as well as animations. In particolare, un Freezable non è un Visual; può ospitare proprietà che diventano sottoproprietà quando l'Freezable viene applicato per riempire un valore di proprietà di un altro oggetto e tali proprietà possono influire sul rendering.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. Per altre informazioni, vedere Cenni preliminari sugli oggetti Freezable.For more information, see Freezable Objects Overview.

Animatable

Animatable è una classe Freezable derivata che aggiunge in modo specifico il livello di controllo dell'animazione e alcuni membri dell'utilità in modo che le proprietà attualmente animate possano essere distinte dalle proprietà non animate.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.

ControlControl

Control è la classe base prevista per il tipo di oggetto che viene definito da un controllo o un componente, a seconda della tecnologia.Control is the intended base class for the type of object that is variously termed a control or component, depending on the technology. In genere, le classi di controlli WPFWPF sono classi che rappresentano direttamente un controllo dell'interfaccia utente o partecipano alla composizione di tale controllo.In general, WPFWPF control classes are classes that either directly represent a UI control or participate closely in control composition. La funzionalità principale che Control Abilita è il modello di controllo.The primary functionality that Control enables is control templating.

Vedere ancheSee also