WPF 콘텐츠 모델

WPF(Windows Presentation Foundation)는 다양한 형식의 콘텐츠를 표시하는 것을 기본 용도로 하는 많은 컨트롤 형식 및 컨트롤과 유사한 형식을 제공하는 프레젠테이션 플랫폼입니다. 사용할 컨트롤이나 파생시킬 컨트롤을 결정하려면 특정 컨트롤이 가장 잘 표시할 수 있는 개체 유형을 이해해야 합니다.

이 항목에서는 WPF 컨트롤 형식 및 컨트롤과 비슷한 형식에 대한 콘텐츠 모델을 요약하여 보여 줍니다. 콘텐츠 모델은 컨트롤에 사용될 수 있는 컨트롤에 대해 설명합니다. 또한 이 항목에서는 각 컨트롤 모델에 대한 콘텐츠 속성을 보여 줍니다. 콘텐츠 속성은 개체의 콘텐츠를 저장하는 데 사용되는 속성입니다.

임의의 콘텐츠가 들어 있는 클래스

일부 컨트롤에는 문자열, DateTime 개체, UIElement 추가 항목의 컨테이너인 등 모든 형식의 개체를 포함할 수 있습니다. 예를 들어에는 Button 이미지와 일부 텍스트가 포함 될 수 있으며,에는 CheckBox 의 값이 포함 될 수 DateTime.Now 있습니다.

WPF에는 임의의 콘텐츠가 들어 있는 네 개의 클래스가 있습니다. 다음 표에서는에서 상속 되는 클래스를 보여 줍니다 Control .

임의의 콘텐츠가 들어 있는 클래스 콘텐츠
ContentControl 임의의 단일 개체입니다.
HeaderedContentControl 헤더 및 단일 항목이며 둘 모두 임의의 개체입니다.
ItemsControl 임의 개체의 컬렉션입니다.
HeaderedItemsControl 헤더와 항목 컬렉션이며 모두 임의의 개체입니다.

이러한 클래스에서 상속하는 컨트롤은 동일한 형식의 콘텐츠를 포함하며 콘텐츠를 동일한 방식으로 처리할 수 있습니다. 다음 그림에서는 이미지와 일부 텍스트를 포함 하는 각 콘텐츠 모델의 한 컨트롤을 보여 줍니다.

각 콘텐츠 모델에서 하나씩 네 개의 서로 다른 컨트롤을 보여 주는 스크린샷

임의의 단일 개체가 들어 있는 컨트롤

클래스에는 ContentControl 임의의 콘텐츠의 단일 부분이 포함 되어 있습니다. 해당 콘텐츠 속성은 Content합니다. 다음 컨트롤은에서 상속 ContentControl 하 고 해당 콘텐츠 모델을 사용 합니다.

다음 그림에서는 Content 가 문자열, DateTime 개체, a 및가 Rectangle Panel 포함 된를 Ellipse 설정 하는 네 개의 단추를 보여 줍니다 TextBlock .

콘텐츠 형식이 다른 네 개의 단추를 보여 주는 스크린샷

속성을 설정 하는 방법에 대 한 예는 Content 를 참조 하십시오 ContentControl .

헤더와 임의의 단일 개체가 들어 있는 컨트롤

HeaderedContentControl클래스는에서 상속 되 ContentControl 고 헤더를 사용 하 여 콘텐츠를 표시 합니다. 에서 콘텐츠 속성인를 상속 하 Content ContentControl 고 형식의 속성을 정의 Header Object 하므로 둘 다 임의의 개체 일 수 있습니다.

다음 컨트롤은에서 상속 HeaderedContentControl 하 고 해당 콘텐츠 모델을 사용 합니다.

다음 그림에서는 두 개의 개체를 보여 줍니다 TabItem . 첫 번째에는 TabItem UIElement 및 인 개체가 있습니다 Header Content . 는 Header 및를 포함 하는로 설정 됩니다 StackPanel Ellipse TextBlock . 는 Content 및를 포함 하는로 설정 됩니다 StackPanel TextBlock Label . 두 번째에는의 TabItem 및에 문자열이 있습니다 Header TextBlock Content .

헤더 속성에 다른 형식을 사용 하는 TabControl

개체를 만드는 방법에 대 한 예제는 TabItem 를 참조 하십시오 HeaderedContentControl .

임의 개체의 컬렉션을 포함하는 컨트롤

ItemsControl클래스는에서 상속 Control 되며 문자열, 개체 또는 다른 요소와 같은 여러 항목을 포함할 수 있습니다. 해당 콘텐츠 속성은 ItemsSourceItems 입니다. ItemsSource 는 일반적으로 데이터 컬렉션을 사용 하 여를 채우는 데 사용 됩니다 ItemsControl . 컬렉션을 사용 하 여를 채우지 않으려면 ItemsControl 속성을 사용 하 여 항목을 추가할 수 있습니다 Items .

다음 컨트롤은에서 상속 ItemsControl 하 고 해당 콘텐츠 모델을 사용 합니다.

다음 그림에서는 ListBox 이러한 형식의 항목을 포함 하는을 보여 줍니다.

네 가지 형식의 콘텐츠가 있는 ListBox를 보여 주는 스크린샷

헤더와 임의 개체의 컬렉션을 포함하는 컨트롤

HeaderedItemsControl클래스는에서 상속 ItemsControl 되며 문자열, 개체, 기타 요소 및 헤더와 같은 여러 항목을 포함할 수 있습니다. ItemsControl콘텐츠 속성, ItemsSource 및를 상속 하 ItemsHeader 임의의 개체 일 수 있는 속성을 정의 합니다.

다음 컨트롤은에서 상속 HeaderedItemsControl 하 고 해당 콘텐츠 모델을 사용 합니다.

UIElement 개체 컬렉션을 포함하는 클래스

Panel클래스는 자식 개체를 배치 하 고 정렬 UIElement 합니다. 해당 콘텐츠 속성은 Children합니다.

다음 클래스는 클래스에서 상속 Panel 하며 해당 콘텐츠 모델을 사용 합니다.

자세한 내용은 패널 개요를 참조하세요.

UIElement의 모양에 영향을 주는 클래스

Decorator클래스는 단일 자식에 시각적 효과를 적용 UIElement 합니다. 해당 콘텐츠 속성은 Child합니다. 다음 클래스는에서 상속 Decorator 하 고 해당 콘텐츠 모델을 사용 합니다.

다음 그림에서는 (를 TextBox 사용 하 여 데코레이팅된)이 포함 된을 보여 줍니다 Border .

검은색 테두리가 있는 TextBox
테두리가 있는 TextBlock

UIElement에 대한 시각적 피드백을 제공하는 클래스

Adorner클래스는 사용자에 게 시각적 신호를 제공 합니다. 예를 들어,를 사용 Adorner 하 여 함수 핸들을 요소에 추가 하거나 컨트롤에 대 한 상태 정보를 제공 합니다. Adorner클래스는 고유한 표시기를 만들 수 있도록 프레임 워크를 제공 합니다. WPF는 구현된 표시기를 제공하지 않습니다. 자세한 내용은 표시기 개요를 참조하세요.

사용자가 텍스트를 입력할 수 있는 클래스

WPF는 사용자가 텍스트를 입력할 수 있는 세 개의 기본 컨트롤을 제공합니다. 각 컨트롤에는 텍스트가 다르게 표시됩니다. 다음 표에서는 이 세 가지 텍스트 관련 컨트롤과 텍스트를 표시할 때의 기능 및 컨트롤 텍스트를 포함하는 속성을 보여 줍니다.

제어 텍스트 표시 콘텐츠 속성
TextBox 일반 텍스트 Text
RichTextBox 서식 있는 텍스트 Document
PasswordBox 숨겨진 텍스트(문자가 마스킹됨) Password

텍스트를 표시하는 클래스

여러 클래스를 사용하여 일반 텍스트나 서식이 지정된 텍스트를 표시할 수 있습니다. TextBlock를 사용 하 여 적은 양의 텍스트를 표시할 수 있습니다. 많은 양의 텍스트를 표시 하려면 FlowDocumentReader , FlowDocumentPageViewer 또는 컨트롤을 사용 FlowDocumentScrollViewer 합니다.

에는 TextBlock 및 라는 두 개의 콘텐츠 속성이 있습니다 Text Inlines . 일관 된 형식을 사용 하는 텍스트를 표시 하려면 속성을 사용 하는 것 Text 이 가장 좋습니다. 텍스트 전체에서 다른 서식을 사용 하려면 속성을 사용 Inlines 합니다. Inlines속성은 Inline 텍스트의 서식을 지정 하는 방법을 지정 하는 개체의 컬렉션입니다.

다음 표에서는 FlowDocumentReader , 및 클래스에 대 한 콘텐츠 속성을 보여 줍니다 FlowDocumentPageViewer FlowDocumentScrollViewer .

제어 콘텐츠 속성 콘텐츠 속성 형식
FlowDocumentPageViewer 문서 IDocumentPaginatorSource
FlowDocumentReader 문서 FlowDocument
FlowDocumentScrollViewer 문서 FlowDocument

FlowDocument 인터페이스를 구현 IDocumentPaginatorSource 하므로 세 클래스 모두를 콘텐츠로 사용할 수 있습니다 FlowDocument .

텍스트 서식을 지정하는 클래스

TextElement 및 관련 클래스를 사용 하 여 텍스트의 서식을 지정할 수 있습니다. TextElement 개체는 및 개체에 텍스트를 포함 하 고 텍스트를 지정 TextBlock FlowDocument 합니다. 개체의 두 가지 기본 유형은 TextElement Block 요소 및 Inline 요소입니다. Block요소는 단락이 나 목록과 같은 텍스트 블록을 나타냅니다. Inline요소는 블록의 텍스트 부분을 나타냅니다. 대부분 Inline 의 클래스는 적용 되는 텍스트의 서식을 지정 합니다. 각 TextElement 에는 고유한 콘텐츠 모델이 있습니다. 자세한 내용은 TextElement 콘텐츠 모델 개요를 참조하세요.

참고 항목