Общие сведения о базовых элементахBase Elements Overview

Большое количество классов в Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) являются производными от четырех классов, которые обычно называются в документации по SDKSDK базовыми классами элементов.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 SDKSDK documentation as the base element classes. Эти классы являются UIElement, FrameworkElement, ContentElement, и FrameworkContentElement.These classes are UIElement, FrameworkElement, ContentElement, and FrameworkContentElement. DependencyObject Класс также имеет отношение, так как это общий базовый класс обоих UIElement и ContentElementThe DependencyObject class is also related, because it is a common base class of both UIElement and ContentElement

Интерфейсы API базовых элементов в классах WPFBase Element APIs in WPF Classes

Оба UIElement и ContentElement являются производными от DependencyObject, через несколько различных путей.Both UIElement and ContentElement are derived from DependencyObject, through somewhat different pathways. Разбиение на этом уровне имеет дело с тем, как UIElement или ContentElement используются в пользовательском интерфейсе и какой целью они применяются в приложении.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 также имеет Visual в своей иерархии класс — это класс, который предоставляет низкоуровневые графические основной поддержки 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 предоставляет платформу для отображения, определяя независимые прямоугольные области экрана.Visual provides a rendering framework by defining independent rectangular screen regions. На практике UIElement для элементов, поддерживающих модель больших объектов, для отрисовки и макетов в областях, которые можно описать как прямоугольные области экрана, и где модель содержимого намеренно более открыта, чтобы разрешить разные сочетания элементов.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 является производным от Visual; его модель ContentElement потреблял бы что-то еще, скажем, для чтения или просмотра, который затем будет интерпретировать элементы и создавать полный Visual для 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. Определенные UIElement классы предназначены для размещения содержимого: они обеспечивают размещение и отображение для одного или нескольких ContentElement классы (DocumentViewer является примером такого класса).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 используется как базовый класс для элементов с меньшими объектными моделями и текста, сведения или содержимого документов, которые могут размещаться в 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.

Уровень платформы и уровень ядраFramework-Level and Core-Level

UIElement служит базовым классом для FrameworkElement, и ContentElement служит базовым классом для FrameworkContentElement.UIElement serves as the base class for FrameworkElement, and ContentElement serves as the base class for FrameworkContentElement. Причиной этого следующего уровня классов является поддержка уровня ядра WPF, который отличается от уровня платформы WPF, с этим разделением также существуют в том, как API-интерфейсы разделены между собой сборки PresentationCore и 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. Уровень платформы WPF предоставляет более полное удовлетворение потребностей основного приложения, включая реализацию диспетчера макетов для представления.The WPF framework level presents a more complete solution for basic application needs, including the implementation of the layout manager for presentation. Уровень ядра WPF позволяет использовать по максимуму возможности WPFWPF, не прибегая к затратам на дополнительные сборки.The WPF core level provides a way to use much of WPFWPF without taking the overhead of the additional assembly. Различия между этими уровнями обычно для наиболее типичных сценариев разработки приложений, и в целом следует рассматривать WPFWPF API-интерфейсы в целом и не нужно заботиться о разнице между уровнем платформы WPF и ядра 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. Различия в уровнях следует учитывать в том случае, если при разработке приложения решено заменить значительное количество функций уровня платформы WPF, например если общее решение уже имеет свои собственные реализации композиции и макета пользовательский интерфейсuser 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 пользовательский интерфейсuser interface (UI) composition and layout.

Выбор элемента для наследованияChoosing Which Element to Derive From

Наиболее удобным способом создания другого класса, расширяющего возможности WPFWPF, является наследование от одного из классов WPFWPF. Тогда вы получаете максимально возможное количество наследуемых функций благодаря существующей иерархии классов.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. В этом разделе перечислены возможности, предоставляемые тремя наиболее важными классами элементов. Эти сведения помогут вам решить, какой класс использовать для наследования.This section lists the functionality that comes with three of the most important element classes to help you decide which class to inherit from.

При реализации элемента управления, который в действительности является одним из наиболее распространенных причин для создания производного от WPFWPF класса, может потребоваться являются производными от класса, который является практическим управления семейства базовый класс элемента управления, или на как минимум 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. Некоторые рекомендации и практические примеры см. в разделе Общие сведения о разработке элементов управления.For some guidance and practical examples, see Control Authoring Overview.

Если вы не создаете элемент управления, а хотите создать производный класс от класса, который находится выше по иерархии, в следующих разделах вы найдете рекомендации по определению характеристик для каждого базового класса элементов.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.

Если вы создаете класс, производный от DependencyObject, вы наследуете следующие функциональные возможности:If you create a class that derives from DependencyObject, you inherit the following functionality:

  • GetValue и SetValue поддержки и общая системная поддержка свойств.GetValue and SetValue support, and general property system support.

  • Возможность использования свойств зависимостей и вложенных свойств, которые реализуются как свойства зависимостей.Ability to use dependency properties and attached properties that are implemented as dependency properties.

Если вы создаете класс, производный от UIElement, вы наследуете следующие функциональные возможности, предоставляемые DependencyObject:If you create a class that derives from UIElement, you inherit the following functionality in addition to that provided by DependencyObject:

Если вы создаете класс, производный от FrameworkElement, вы наследуете следующие функциональные возможности, предоставляемые UIElement:If you create a class that derives from FrameworkElement, you inherit the following functionality in addition to that provided by UIElement:

  • Поддержка стилей и раскадровок.Support for styling and storyboards. Дополнительные сведения см. в разделе Style и Общие сведения о раскадровках.For more information, see Style and Storyboards Overview.

  • Поддержка привязки данных.Support for data binding. Более подробную информацию см. в разделе Общие сведения о связывании данных.For more information, see Data Binding Overview.

  • Поддержка ссылок на динамические ресурсы.Support for dynamic resource references. Дополнительные сведения см. в разделе Ресурсы XAML.For more information, see XAML Resources.

  • Поддержка наследования значений свойств и других флагов в метаданных, которые помогают передавать сведения о состоянии свойств в службы платформы, такие как привязка данных, управление стилями и реализация структуры макета.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. Дополнительные сведения см. в разделе Метаданные свойств платформы.For more information, see Framework Property Metadata.

  • Понятие логического дерева.The concept of the logical tree. Дополнительные сведения см. в разделе Деревья в WPF.For more information, see Trees in WPF.

  • Поддержка практической реализации уровня платформы WPF система макета, включая OnPropertyChanged переопределения, которое может обнаружить изменения в свойствах, влияющих на макет.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.

Если вы создаете класс, производный от ContentElement, вы наследуете следующие функциональные возможности, предоставляемые DependencyObject:If you create a class that derives from ContentElement, you inherit the following functionality in addition to that provided by DependencyObject:

Если вы создаете класс, производный от FrameworkContentElement, вы получаете следующие функциональные возможности, предоставляемые ContentElement:If you create a class that derives from FrameworkContentElement, you get the following functionality in addition to that provided by ContentElement:

  • Поддержка стилей и раскадровок.Support for styling and storyboards. Дополнительные сведения см. в разделе Style и Общие сведения об анимации.For more information, see Style and Animation Overview.

  • Поддержка привязки данных.Support for data binding. Более подробную информацию см. в разделе Общие сведения о связывании данных.For more information, see Data Binding Overview.

  • Поддержка ссылок на динамические ресурсы.Support for dynamic resource references. Дополнительные сведения см. в разделе Ресурсы XAML.For more information, see XAML Resources.

  • Поддержка наследования значений свойств и других флагов в метаданных, которые помогают передавать сведения о состоянии свойств в службы платформы, такие как привязка данных, управление стилями и реализация структуры макета.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. Дополнительные сведения см. в разделе Метаданные свойств платформы.For more information, see Framework Property Metadata.

  • Вы не наследуете доступ к изменениям системы макета (таких как ArrangeOverride).You do not inherit access to layout system modifications (such as ArrangeOverride). Реализации системы макета доступны только на FrameworkElement.Layout system implementations are only available on FrameworkElement. Однако вы наследуете OnPropertyChanged переопределения, которое может обнаружить изменения в свойства, которые влияют на макет и о них любым узлам содержимого.However, you inherit an OnPropertyChanged override that can detect changes to properties that influence layout and report these to any content hosts.

Модели содержимого описаны в документации для различных классов.Content models are documented for a variety of classes. Модель содержимого, принятая для класса, возможно, является тем фактором, который следует рассмотреть при выборе подходящего класса для наследования.The content model for a class is one possible factor you should consider if you want to find an appropriate class to derive from. Дополнительные сведения см. в разделе Модель содержимого WPF.For more information, see WPF Content Model.

Другие базовые классыOther Base Classes

DispatcherObjectDispatcherObject

DispatcherObject обеспечивает поддержку для WPFWPF модели и включает все объекты, созданные для работы с потоками WPFWPF приложений, которым будет связана Dispatcher.DispatcherObject provides support for the WPFWPF threading model and enables all objects created for WPFWPF applications to be associated with a Dispatcher. Даже если вы не являются производными от UIElement, DependencyObject, или Visual, рекомендуется наследование от DispatcherObject для получения поддержки потоковой модели.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. Дополнительные сведения см. в разделе Модель потоков.For more information, see Threading Model.

Визуальный элементVisual

Visual реализует концепцию двумерного объекта, который обычно требует визуального представления в приблизительно прямоугольной области.Visual implements the concept of a 2D object that generally requires visual presentation in a roughly rectangular region. Реальное отображение объекта Visual происходит в других классах (не автономный), но Visual класс предоставляет известный тип, который используется в процессах отображения на разных уровнях.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 реализует проверку попадания курсора, но он не предоставляет события, сообщающие положительных результатах проверки (они находятся в UIElement).Visual implements hit testing, but it does not expose events that report hit-testing positives (these are in UIElement). Дополнительные сведения см. в разделе Программирование визуального слоя.For more information, see Visual Layer Programming.

FreezableFreezable

Freezable имитирует постоянство в изменяемом объекте, предоставляя средства для создания копий объекта, когда требуется постоянный объект или необходим для повышения производительности.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. Freezable Тип обеспечивает общую основу для определенных графических элементов, таких геометрических объектов и кисти, а также анимации.The Freezable type provides a common basis for certain graphics elements such as geometries and brushes, as well as animations. В частности Freezable не Visual; он может содержать свойства, которые становятся дочерними свойствами при Freezable применяется для заполнения значения свойства другого объекта, и эти дочерние свойства могут влиять на отрисовку.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. Дополнительные сведения см. в разделе Общие сведения об объектах класса Freezable.For more information, see Freezable Objects Overview.

Animatable

Animatable является Freezable производного класса, который специально добавляет уровень управления анимацией и некоторые служебные члены таким образом, в настоящее время анимационные свойства можно отличить свойства от неанимированных.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.

Элемент управленияControl

Control является предполагаемым базовым классом для типа объекта, который называется элемент управления или компонент, в зависимости от технологии.Control is the intended base class for the type of object that is variously termed a control or component, depending on the technology. Как правило, классы элементов управления WPFWPF — это классы, которые либо непосредственно представляют элемент управления пользовательского интерфейса, либо близко участвуют в его композиции.In general, WPFWPF control classes are classes that either directly represent a UI control or participate closely in control composition. Основные функциональные возможности, Control включает является шаблон элемента управления.The primary functionality that Control enables is control templating.

См. такжеSee also