WPF 콘텐츠 모델
Windows Presentation Foundation (WPF)는 다양한 형식의 콘텐츠를 표시하는 것을 기본 용도로 하는 많은 컨트롤 형식 및 컨트롤과 유사한 형식을 제공하는 프레젠테이션 플랫폼입니다. 사용할 컨트롤이나 파생시킬 컨트롤을 결정하려면 특정 컨트롤이 가장 잘 표시할 수 있는 개체 유형을 이해해야 합니다.
이 항목에서는 WPF 컨트롤 형식 및 컨트롤과 비슷한 형식에 대한 콘텐츠 모델을 요약하여 보여 줍니다. 콘텐츠 모델은 컨트롤에 사용될 수 있는 컨트롤에 대해 설명합니다. 또한 이 항목에서는 각 컨트롤 모델에 대한 콘텐츠 속성을 보여 줍니다. 콘텐츠 속성은 개체의 콘텐츠를 저장하는 데 사용되는 속성입니다.
이 항목에는 다음 단원이 포함되어 있습니다.
- 임의의 콘텐츠가 들어 있는 클래스
- UIElement 개체 컬렉션을 포함하는 클래스
- UIElement의 모양에 영향을 주는 클래스
- UIElement에 대한 시각적 피드백을 제공하는 클래스
- 사용자가 텍스트를 입력할 수 있는 클래스
- 텍스트를 표시하는 클래스
- 텍스트 서식을 지정하는 클래스
- 관련 항목
임의의 콘텐츠가 들어 있는 클래스
일부 컨트롤은 문자열, DateTime 개체, 추가 항목에 대한 컨테이너로 사용되는 UIElement 등과 같은 모든 형식의 개체를 포함할 수 있습니다. 예를 들어 Button은 이미지와 일부 텍스트를 포함할 수 있고 CheckBox는 DateTime.Now 값을 포함할 수 있습니다.
WPF에는 임의의 콘텐츠가 들어 있는 네 개의 클래스가 있습니다. 다음 표에서는 Control에서 상속하는 클래스를 보여 줍니다.
임의의 콘텐츠가 들어 있는 클래스 |
Content |
---|---|
임의의 단일 개체입니다. |
|
헤더 및 단일 항목이며 둘 모두 임의의 개체입니다. |
|
임의 개체의 컬렉션입니다. |
|
헤더와 항목 컬렉션이며 모두 임의의 개체입니다. |
이러한 클래스에서 상속하는 컨트롤은 동일한 형식의 콘텐츠를 포함하며 콘텐츠를 동일한 방식으로 처리할 수 있습니다. 다음 그림에서는 이미지와 일부 텍스트를 포함하는 각 콘텐츠 모델의 컨트롤을 하나씩 보여 줍니다.
임의의 단일 개체가 들어 있는 컨트롤
ContentControl 클래스는 임의의 단일 콘텐츠를 포함합니다. 해당 콘텐츠 속성은 Content입니다. 다음 컨트롤은 ContentControl에서 상속하며 해당 콘텐츠 모델을 사용합니다.
다음 그림에서는 Content가 문자열, DateTime 개체, Rectangle 및 Ellipse 및 TextBlock을 포함하는 Panel로 설정된 네 단추를 보여 줍니다.
다양한 형식의 내용을 가진 네 개의 단추
Content 속성을 설정하는 방법에 대한 예제는 ContentControl을 참조하십시오.
헤더와 임의의 단일 개체가 들어 있는 컨트롤
HeaderedContentControl 클래스는 ContentControl에서 상속하며 콘텐츠를 헤더와 함께 표시합니다. 또한 콘텐츠 속성 Content를 ContentControl에서 상속하고 Header 속성을 Object 형식으로 정의하여 둘 모두 임의의 개체가 될 수 있도록 합니다.
다음 컨트롤은 HeaderedContentControl에서 상속하며 해당 콘텐츠 모델을 사용합니다.
다음 그림은 두 TabItem 개체를 보여 줍니다. 첫 번째 TabItem에서는 UIElement 개체가 Header 및 Content로 사용됩니다. Header는 Ellipse 및 TextBlock을 포함하는 StackPanel로 설정됩니다. Content는 TextBlock 및 Label을 포함하는 StackPanel로 설정됩니다. 두 번째 TabItem에는 Header의 문자열과 Content의 TextBlock이 있습니다.
헤더 속성에서 다양한 형식을 사용하는 TabControl
TabItem 개체를 만드는 방법에 대한 예제는 HeaderedContentControl을 참조하십시오.
임의 개체의 컬렉션을 포함하는 컨트롤
ItemsControl 클래스는 Control에서 상속하며 문자열, 개체 또는 기타 요소와 같은 여러 항목을 포함할 수 있습니다. 콘텐츠 속성은 ItemsSource 및 Items입니다. ItemsSource는 일반적으로 데이터 컬렉션으로 ItemsControl을 채우는 데 사용됩니다. 컬렉션을 사용하여 ItemsControl을 채우지 않으려면 Items 속성을 사용하여 항목을 추가할 수 있습니다.
다음 컨트롤은 ItemsControl에서 상속하며 해당 콘텐츠 모델을 사용합니다.
다음 그림에서는 다음과 같은 형식의 항목이 들어 있는 ListBox를 보여 줍니다.
여러 개체 형식이 들어 있는 목록 상자
헤더와 임의 개체의 컬렉션을 포함하는 컨트롤
HeaderedItemsControl 클래스는 ItemsControl에서 상속하며 문자열, 개체 또는 기타 요소와 헤더를 포함할 수 있습니다. 또한 ItemsControl 콘텐츠 속성, ItemsSource 및 Items를 상속하고 Header 속성을 임의의 개체가 될 수 있도록 정의합니다.
다음 컨트롤은 HeaderedItemsControl에서 상속하며 해당 콘텐츠 모델을 사용합니다.
UIElement 개체 컬렉션을 포함하는 클래스
Panel 클래스는 자식 UIElement 개체를 배치하고 정렬합니다. 해당 콘텐츠 속성은 Children입니다.
다음 클래스는 Panel 클래스에서 상속하며 해당 콘텐츠 모델을 사용합니다.
자세한 내용은 Panel 개요를 참조하십시오.
UIElement의 모양에 영향을 주는 클래스
Decorator 클래스는 단일의 자식 UIElement 또는 그 주위에 시각적 효과를 적용합니다. 해당 콘텐츠 속성은 Child입니다. 다음 클래스는 Decorator에서 상속하며 해당 콘텐츠 모델을 사용합니다.
다음 그림에서는 주위가 Border로 데코레이팅된 TextBox를 보여 줍니다.
테두리가 있는 TextBlock
UIElement에 대한 시각적 피드백을 제공하는 클래스
Adorner 클래스는 사용자에게 시각적 큐를 제공합니다. 예를 들어 Adorner를 사용하여 함수 핸들을 요소에 추가하거나 컨트롤에 대한 상태 정보를 제공할 수 있습니다. Adorner 클래스는 사용자 표시기를 만들 수 있도록 프레임워크를 제공합니다. WPF는 구현된 표시기를 제공하지 않습니다. 자세한 내용은 표시기 개요를 참조하십시오.
사용자가 텍스트를 입력할 수 있는 클래스
WPF는 사용자가 텍스트를 입력할 수 있는 세 개의 기본 컨트롤을 제공합니다. 각 컨트롤에는 텍스트가 다르게 표시됩니다. 다음 표에서는 이 세 가지 텍스트 관련 컨트롤과 텍스트를 표시할 때의 기능 및 컨트롤 텍스트를 포함하는 속성을 보여 줍니다.
컨트롤 |
텍스트 표시 |
콘텐츠 속성 |
---|---|---|
일반 텍스트 |
||
서식이 지정된 텍스트 |
||
숨겨진 텍스트(문자가 마스킹됨) |
텍스트를 표시하는 클래스
여러 클래스를 사용하여 일반 텍스트나 서식이 지정된 텍스트를 표시할 수 있습니다. TextBlock을 사용하여 적은 양의 텍스트를 표시할 수 있습니다. 많은 양의 텍스트를 표시하려면 FlowDocumentReader, FlowDocumentPageViewer 또는 FlowDocumentScrollViewer 컨트롤을 사용합니다.
TextBlock에는 Text 및 Inlines라는 두 개의 콘텐츠 속성이 있습니다. 일관된 서식을 사용하는 텍스트를 표시하려면 Text 속성을 선택하는 것이 좋습니다. 텍스트 전체에서 다른 서식을 사용하려면 Inlines 속성을 사용합니다. Inlines 속성은 텍스트 서식을 지정하는 방법을 설정하는 Inline 개체 컬렉션입니다.
다음 표에서는 FlowDocumentReader, FlowDocumentPageViewer 및 FlowDocumentScrollViewer 클래스의 콘텐츠 속성을 보여 줍니다.
컨트롤 |
콘텐츠 속성 |
콘텐츠 속성 형식 |
---|---|---|
Document |
||
Document |
||
Document |
FlowDocument는 IDocumentPaginatorSource 인터페이스를 구현하므로 세 클래스 모두에서 FlowDocument를 콘텐츠로 사용할 수 있습니다.
텍스트 서식을 지정하는 클래스
TextElement와 관련 클래스를 사용하여 텍스트의 서식을 지정할 수 있습니다. TextElement 개체는 TextBlock 및 FlowDocument 개체의 텍스트를 포함하고 서식을 지정합니다. TextElement 개체의 두 가지 기본 형식은 Block 요소 및 Inline 요소입니다. Block 요소는 단락, 목록 등과 같은 텍스트 블록을 나타냅니다. Inline 요소는 텍스트의 일부를 블록으로 나타냅니다. 다양한 Inline 클래스를 사용하여 해당 클래스가 적용되는 텍스트의 서식을 지정할 수 있습니다. 각 TextElement마다 자체 콘텐츠 모델이 있습니다. 자세한 내용은 TextElement 콘텐츠 모델 개요을 참조하십시오.