기본 요소 개요Base Elements Overview

WPF(Windows Presentation Foundation)Windows Presentation Foundation (WPF)의 클래스는 대부분 SDK 설명서에서 기본 요소 클래스로 참조 되는 네 개의 클래스에서 파생 됩니다.A high percentage of classes in WPF(Windows Presentation Foundation)Windows Presentation Foundation (WPF) are derived from four classes which are commonly referred to in the SDK documentation as the base element classes. 이러한 클래스는 UIElement, FrameworkElement, ContentElementFrameworkContentElement입니다.These classes are UIElement, FrameworkElement, ContentElement, and FrameworkContentElement. DependencyObject 클래스는 UIElementContentElement의 공통 기본 클래스 이므로 관련이 있습니다.The DependencyObject class is also related, because it is a common base class of both UIElement and ContentElement

WPF 클래스의 기본 요소 APIBase Element APIs in WPF Classes

UIElementContentElement는 모두 약간 다른 경로를 통해 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의 클래스 계층 구조에는 WPF(Windows Presentation Foundation)Windows Presentation Foundation (WPF)의 기반이 되는 하위 수준의 그래픽 지원을 제공 하는 클래스도 Visual 있습니다.UIElement also has Visual in its class hierarchy, which is a class that exposes the lower-level graphics support underlying the WPF(Windows Presentation Foundation)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를 사용 하 여 요소를 해석 하 고 WPF(Windows Presentation Foundation)Windows Presentation Foundation (WPF)에 대 한 전체 Visual을 생성 하는 판독기 또는 뷰어와 같은 다른 항목에서 사용 됩니다.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 WPF(Windows Presentation Foundation)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

UIElementFrameworkElement에 대 한 기본 클래스로 사용 되며 ContentElement FrameworkContentElement에 대 한 기본 클래스로 사용 됩니다.UIElement serves as the base class for FrameworkElement, and ContentElement serves as the base class for FrameworkContentElement. 클래스의 다음 수준에 대 한 이유는 WPF 프레임 워크 수준과는 별개의 WPF core 수준을 지 원하는 것입니다 .이 나누기는 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. 전체 솔루션에 이미 UI(사용자 인터페이스)user interface (UI) 컴퍼지션 및 레이아웃 구현이 있는 경우와 같이 애플리케이션 디자인에서 WPF 프레임워크 수준 기능의 실질적인 상당한 부분을 대체하도록 선택하는 경우에는 이러한 수준 구분에 대해 알고 있어야 합니다.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 UI(사용자 인터페이스)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:

  • GetValueSetValue 지원 및 일반 속성 시스템 지원.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:

  • 애니메이션 속성 값에 대한 기본 지원 -Basic support for animated property values. 자세한 내용은 애니메이션 개요를 참조하세요.For more information, see Animation Overview.

  • 기본 입력 이벤트 지원 및 명령 지원 -Basic input event support, and commanding support. 자세한 내용은 입력 개요명령 개요를 참조하세요.For more information, see Input Overview and Commanding Overview.

  • 레이아웃 시스템에 정보를 제공하도록 재정의될 수 있는 가상 메서드Virtual methods that can be overridden to provide information to a layout system.

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. 자세한 내용은 StyleStoryboard 개요를 참조 하세요.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.

  • 레이아웃에 영향을 주는 속성의 변경 내용을 검색할 수 있는 OnPropertyChanged 재정의를 포함 하 여 레이아웃 시스템의 실용적인 WPF 프레임 워크 수준 구현을 지원 합니다.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

DispatcherObjectWPFWPF 스레딩 모델을 지원 하 고 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은 일반적으로 약 사각형 영역에서 시각적 프레젠테이션을 필요로 하는 2D 개체의 개념을 구현 합니다.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. 특히 FreezableVisual되지 않습니다. 다른 개체의 속성 값을 채우기 위해 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.

ControlControl

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 컨트롤 클래스는 UI 컨트롤을 직접 나타내거나 컨트롤 컴퍼지션에 밀접하게 참여하는 클래스입니다.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