내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Windows Phone의 텍스트 및 글꼴

2014-06-18

적용 대상: Windows Phone 8 및 Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

 

Windows Phone 은 다양한 서식 있는 텍스트를 만들기 위한 일련의 속성과 함께 텍스트를 렌더링하기 위한 몇 가지 요소를 제공합니다.

이 항목에는 다음 단원이 포함되어 있습니다.

 

대체로 Windows Phone 의 텍스트 요소는 다음 중 하나입니다.

  • TextBlock

  • TextBox 또는 RichTextBox와 같이 일반 템플릿 및 프레젠테이션에서 텍스트를 강조하거나 텍스트를 표시하는 Control

  • TextBlock 내에 표시되는 텍스트 서식을 지정하는 데 사용할 수 있는 TextElement 파생 클래스

이러한 요소는 요소 또는 요소 콘텐츠에서 텍스트가 표시되는 방식을 제어하는 일련의 속성을 갖는다는 특징이 있습니다. 이러한 속성에는 FontFamily, FontSize, FontStretch, FontStyle, FontWeightForeground가 있습니다. 속성의 구현은 요소 간에 일반 상속의 일부로 반드시 공유되지는 않지만 각 텍스트 요소에서 구현은 유사합니다.

TextBlock

TextBlock 개체는 Windows Phone 기반 응용 프로그램에서 읽기 전용 텍스트를 표시하기 위한 주 요소입니다. 다음 XAML에서는 TextBlock 요소를 정의하고 Text 속성을 문자열로 설정하는 방법을 보여 줍니다.

<TextBlock Text="Hello, world!" />

다음 그림에서는 이전 XAML의 결과를 보여 줍니다.

기본 글꼴 속성을 사용한 TextBlock 렌더링

"Hello, world!" textblock.

TextBlock은 또한 해당 콘텐츠의 기본 텍스트 모델을 지원합니다. 이에 대해서는 이 항목의 "TextBlock 텍스트 모델" 단원에서 설명합니다.

텍스트 컨트롤

Windows Phone 에서 텍스트를 직접 표시하는 UI 요소에 TextBlock만 있는 것은 아닙니다. TextBox, PasswordBoxRichTextBox도 텍스트 요소입니다. 이러한 클래스는 텍스트 및 글꼴과 관련된 많은 속성을 구현하는 Control 클래스에서 파생됩니다. 그러나 Control에서 파생되는 클래스가 항상 텍스트를 표시할 수 있는 것은 아니며, 또한 텍스트 요소를 포함할 수 있는 콘텐츠 모델을 지원하는 것은 아닙니다. 다음은 Control 클래스에 구현되는 관련 텍스트 및 글꼴 속성입니다.

Control.FontFamily

Control.FontSize

Control.FontStretch

Control.FontStyle

Control.FontWeight

또한 글꼴 속성 전용으로 사용되지 않아도 Foreground는 Windows Phone 텍스트 요소에 표시되는 텍스트에 Brush를 제공합니다.

텍스트 컨트롤에서 글꼴 속성 상속

Control 수준에서 텍스트 및 글꼴 속성을 구현하는 한 가지 이유는 컨트롤이 글꼴 속성에 대해 속성 값 상속을 지원할 수 있도록 하기 위해서입니다. 이렇게 하면 템플릿의 합성 파트를 사용하여 컨트롤을 정의할 수 있으며, 텍스트 문자열을 표시하는 콘텐츠나 합성 파트에 부모 컨트롤의 글꼴 속성을 적용할 수 있습니다.

예를 들어 ComboBox는 다른 요소 또는 텍스트를 표시할 수 있는 항목 컨트롤입니다. ComboBox에 글꼴 속성을 설정하면 컨트롤 논리를 특별히 처리하지 않아도 글꼴 속성이 자동으로 다른 요소 또는 표시된 텍스트에 상속됩니다. 표시된 텍스트의 경우 텍스트에 특성을 적용할 수 있는 다른 방법이 없기 때문에 글꼴 속성 상속 기능을 사용하면 매우 유용합니다. 사용자 지정 컨트롤의 텍스트 콘텐츠와 합성 파트도 똑같은 방식으로 해당 Control 기반 글꼴 속성을 상속할 수 있습니다.

글꼴 속성은 합성 파트가 TextBlock일 때 상속됩니다. TextBlock이 기술적으로 컨트롤이 아니며 부모와 속성 구현을 공유하지 않는 경우에도 글꼴 속성은 상속됩니다. 이로 인해 컨트롤과 TextBlock 간에 글꼴 속성이 동일해집니다.

Style 또는 적용된 템플릿을 통해 텍스트 요소 속성을 설정할 경우 런타임 시 자식 요소에게 속성이 상속됩니다. 런타임 시 텍스트 요소 속성을 변경하면 새 값이 전파되어 자식 텍스트 요소에 상속됩니다.

텍스트 요소를 사용할 경우 XAML에 다양한 글꼴 속성의 텍스트 요소를 지정할 수 있으며 이 속성은 해당 요소의 클래스에서 사용할 수 있는 속성과 일치합니다. 다음 표에는 각 텍스트 요소에 지정할 수 있는 글꼴 특성이 나와 있습니다.

속성

설명

참고

FontFamily

"Times New Roman"과 같은 원하는 글꼴 패밀리를 지정합니다.

기본값은 "Portable User Interface"이며 이에 대해서는 이 항목의 "지원되는 로컬 글꼴" 섹션에 설명되어 있습니다. FontFamily는 글꼴 파일 및 파일 내 패밀리(# 문자로 구분됨)를 참조하는 URI 문자열을 포함할 수 있습니다. 이것은 사용자 시스템의 글꼴을 사용하는 대신 응용프로그램의 주 어셈블리의 일부로 글꼴 파일을 배포하는 경우에 해당합니다. 자세한 내용은 FontFamily를 참조하세요.

FontSize

원하는 글꼴 크기를 픽셀 단위로 지정합니다. 값은 음수가 아니어야 합니다.

기본값은 11픽셀입니다.

FontStretch

글꼴의 원하는 문자 모양 너비를 지정합니다.

기본값은 Normal입니다. FontStretch의 효과는 사용되는 글꼴 패밀리에 따라 다르며 글꼴 패밀리에 있는 글꼴만 지정할 수 있습니다. 문자 모양을 프로그래밍 방식으로 늘리지는 않습니다. 참고: FontStretch 매핑을 사용할 수 없을 경우 텍스트로 변환을 적용해 볼 수 있습니다.

FontStyle

원하는 글꼴 스타일이 기본인지, 아니면 기울임꼴인지를 지정합니다.

기본값은 Normal입니다. FontWeight의 효과는 사용되는 글꼴 패밀리에 따라 다르며 일반적으로 글꼴 패밀리에 있는 글꼴만 지정할 수 있습니다. Windows Phone 은 기울임 변형을 프로그래밍 방식으로 만들어 기울임꼴을 시뮬레이션하지 않습니다.

FontWeight

글꼴의 원하는 문자 모양 두께를 지정합니다.

기본값은 Normal입니다. FontWeight의 효과는 사용되는 글꼴 패밀리에 따라 다르며 일반적으로 글꼴 패밀리에 있는 글꼴만 지정할 수 있습니다. Windows Phone 은 패밀리에 기본 두께 글꼴만 포함되고 굵은 두께 글꼴이 포함되지 않은 경우를 제외하고는 프로그래밍 방식으로 다른 두께를 만들지 않습니다. 이 경우 Windows Phone 에서는 2D 그래픽 알고리즘을 사용하여 획의 너비를 늘려 굵은 두께 글꼴을 시뮬레이션합니다.

TextDecorations

장식의 한 형식인 밑줄을 지정합니다.

기본값은 장식을 사용하지 않는 것입니다. 밑줄 장식을 지정하려면 TextDecorations 특성을 Underline으로 설정합니다. TextDecorationsTextBlock의 속성 및 인라인 요소로는 사용할 수 있지만 Control 기반 텍스트 요소에는 사용할 수 없습니다.

다음 XAML에서는 TextBlock 요소를 정의하고 앞의 표에 나와 있는 모든 글꼴 특성(TextDecorations는 제외)을 지정하는 방법을 보여 줍니다.

참고참고:

Windows Phone 에서 선택하는 글꼴에 따라 지정된 글꼴 특성이 렌더링 중에 사용된 글꼴 특성이 아닐 수 있습니다. 자세한 내용은 이 항목 뒷부분의 "글꼴 선택" 섹션을 참조하세요.

<TextBlock
  Text="Font Attributes"
  FontFamily="Verdana"
  FontSize="36"
  FontStretch="UltraExpanded"
  FontStyle="Italic"
  FontWeight="ExtraBlack" />

다음 그림에서는 앞의 XAML 콘텐츠 예제의 결과를 보여 줍니다.

정의된 글꼴 속성 값을 사용하여 렌더링하는 TextBlock

Font attributes.

사용할 수 있는 글꼴은 Windows Phone 버전에 따라 다릅니다.

참고참고:

Windows Phone 에서 지원되는 글꼴 목록은 Windows Phone 8에 대한 글꼴 및 언어 구성 지원을 참조하세요.

일반적으로 클라이언트 컴퓨터에서 글꼴 하위 집합을 사용할 수 있습니다. 텍스트 요소는 로컬 컴퓨터에서 사용 가능한 경우 다음 라틴 글꼴을 사용할 수 있습니다.

  • Arial

  • Arial Black

  • Arial Unicode MS

  • Calibri

  • Cambria

  • Cambria Math

  • Comic Sans MS

  • Candara

  • Consolas

  • Constantia

  • Corbel

  • Courier New

  • 그루지야

  • Lucida Sans Unicode

  • Segoe UI

  • 기호

  • Tahoma

  • Times New Roman

  • Trebuchet MS

  • Verdana

  • Wingdings

  • Wingdings 2

  • Wingdings 3

Portable User Interface는 합성 글꼴입니다. 이 글꼴은 여러 글꼴을 사용하여 Windows Phone 에서 지원하는 국가별 언어 범위를 구현합니다.

동아시아 텍스트로 작업하려는 경우 일반적으로 텍스트 요소는 로컬 컴퓨터에서 사용 가능한 경우 다음과 같은 동아시아 글꼴을 사용할 수 있습니다.

  • 바탕

  • Meiryo

  • MS Gothic

  • MS Mincho

  • MS PGothic

  • MS PMincho

  • PMingLiU

  • SimSun

Microsoft Windows를 실행 중인 컴퓨터의 Windows Phone 텍스트 요소는 로컬 컴퓨터에서 사용 가능한 경우 다음과 같은 동아시아 글꼴을 사용할 수 있습니다.

  • 바탕체

  • DFKai-SB

  • 돋움

  • 돋움체

  • FangSong

  • 굴림체

  • 궁서

  • 궁서체

  • KaiTi

  • 맑은 고딕

  • Microsoft JhengHei

  • Microsoft YaHei

  • MingLiU

  • MingLiu_HKSCS

  • MingLiu_HKSCS-ExtB

  • MingLiu-ExtB

  • MS UI Gothic

  • NSimSun

  • NSimSun-18030

  • PMingLiu-ExtB

  • SimHei

  • SimSun-18030

  • SimSun-ExtB

글꼴 선택

반드시 Windows Phone 에서 사용하는 글꼴을 지정해야 할 필요는 없습니다. Windows Phone 은 지원되는 로컬 글꼴, FontFamily 속성에 참조된 패키지 파일에 제공된 글꼴 또는 FontSource 속성에 전달되는 .ttf 파일이나 스트림 기반 zip 파일에서 글꼴을 선택합니다. FontFamily, FontStretch, FontStyleFontWeight 속성 값에 따라 가장 일치하는 글꼴로 표시됩니다. 이러한 네 가지 글꼴 속성을 모두 지정하여 텍스트 요소에 사용할 정확하고 일관성 있는 글꼴을 선택해야 합니다.

기본값이 아닌 글꼴 지정

Windows Phone 은 설치 패키지에 글꼴을 포함하지 않으며 기본적으로 로컬 시스템 글꼴을 사용합니다. 지원되는 로컬 글꼴 목록에 없는 글꼴을 텍스트 요소에 사용하려면 XAML에서 FontFamily 속성을 사용하거나 코드에서 FontSource 속성을 사용하여 글꼴을 지정합니다. FontFamily 속성은 단일 글꼴 파일 또는 글꼴 파일이 들어 있는 zip 파일을 지정할 수 있으며 대체 시퀀스를 통합할 수 있습니다. XAML FontFamily 사용을 위해 참조된 모든 글꼴 파일은 어셈블리에 리소스로 포함되어야 합니다. FontSource를 사용할 경우 코드에서 스트림(예: 격리된 저장소) 또는 XAP 패키지로부터 글꼴에 대한 소스 글꼴 파일(또는 글꼴의 zip 파일)을 로드할 수 있습니다.

자세한 내용은 관련 클래스 페이지인 FontFamilyFontSource를 참조하세요.

Foreground 속성을 사용하면 렌더링된 텍스트에 대한 Brush를 지정할 수 있습니다. 다음 XAML에서는 Foreground를 가장 간단하게 사용하는 방법을 보여 줍니다. 텍스트에 해당 색의 SolidColorBrush를 적용하는 명명된 색 문자열을 사용합니다. ForegroundTextBlock과 그 안에 있는 각각의 Run 텍스트 요소에 개별적으로 설정됩니다.

<!-- TextBlock with different brushes applied to parts of the text. -->
<TextBlock
  FontFamily="Verdana"
  Foreground="Navy">
  Navy
  <Run Text="DodgerBlue " Foreground="DodgerBlue"/>
  <Run Text="LightSteelBlue " Foreground="LightSteelBlue"/>
</TextBlock>

글꼴에 전경을 적용할 때 단색만 사용할 수 있는 것은 아닙니다 Windows Phone 에서 모든 Brush 파생 클래스를 사용할 수 있으며 이러한 클래스에는 RadialGradientBrush, LinearGradientBrush, ImageBrushVideoBrush가 있습니다. XAML에 이러한 브러시를 지정할 경우 속성 요소 구문을 사용하거나 리소스 참조와 같은 참조를 사용해야 합니다. 다음 XAML에서는 속성 요소 구문을 사용하여 텍스트에 ImageBrush를 지정하는 예제를 보여 줍니다.

<TextBlock Text="SHRUBBERY">
  <TextBlock.Foreground>
    <ImageBrush ImageSource="forest.jpg"/>
  </TextBlock.Foreground>
</TextBlock>

다음 그림에서는 이전 XAML에서 렌더링된 텍스트를 보여 줍니다.

이미지 브러시를 렌더링하는 TextBlock

Output from an ImageBrush.

TextBlock에 텍스트를 설정할 경우 다음 예제와 같이 명시적인 Text 속성 집합 대신 직관적인 내부 텍스트 형식을 사용할 수도 있습니다.

<TextBlock>Hello, world!</TextBlock>
참고참고:

Text 속성을 설정할 때 선행 공백이나 후행 공백은 유지되지 않으며 내부 공백만 유지됩니다. XAML에서 공백을 처리하는 방법에 대한 자세한 내용은 Windows Phone 8의 XAML를 참조하세요.

Run 및 LineBreak 개체 사용

TextBlock은 단일 문자열을 표시하는 대신 다양한 Run 요소에 포함된 일련의 문자열을 표시할 수 있습니다. 이러한 각 요소에는 서로 다른 문자 수준 서식이 적용될 수 있습니다. LineBreak 개체는 TextBlock에 명시적인 새 줄을 나타내며 일반적으로 둘러싸는 Run 요소 간에 사용됩니다. LineBreakRun은 기본 클래스(Inline)를 공유함으로써 TextBlock에 강력한 형식의 InlineCollection 텍스트 모델 콘텐츠를 포함할 수 있도록 합니다. 이 InlineCollectionTextBlock XAML 콘텐츠 속성이기도 하므로 다양한 RunLineBreak 요소를 TextBlock의 자식 요소로 간단히 지정하여 TextBlock 모델에 항목을 지정할 수 있습니다.

다음 XAML에서는 LineBreak 개체로 구분된 Run 개체를 사용하여 TextBlock에서 서식이 다르게 지정된 몇 가지 문자열을 정의하는 방법을 보여 줍니다.

<!-- Display formatted text as Run objects within a TextBlock. -->
<Canvas>
<TextBlock
  FontFamily="Arial" Width="400" Text="Sample text formatting runs">
  <LineBreak/>
  <Run Foreground="Maroon" FontFamily="Courier New" FontSize="24">Courier New 24</Run>
  <LineBreak/>
  <Run Foreground="Teal" FontFamily="Times New Roman" FontSize="18" FontStyle="Italic">Times New Roman Italic 18</Run>
  <LineBreak/>
  <Run Foreground="SteelBlue" FontFamily="Verdana" FontSize="14" FontWeight="Bold">Verdana Bold 14</Run>
</TextBlock>
</Canvas>

다음 그림에서는 앞의 XAML에서 렌더링된 서식 있는 텍스트를 보여 줍니다.

여러 Run 개체를 렌더링하는 TextBlock

Sample of text formatting runs.

LineBreak는 각 Run의 텍스트가 별도의 줄에 표시되게 합니다. LineBreak가 없으면 각 Run의 텍스트가 한 줄로 모두 연결되므로 TextBlock 개체 너비 또는 Windows Phone 콘텐츠 영역의 너비를 초과하는 경우 내용이 잘릴 수 있습니다. 다음 그림에서는 LineBreak 개체를 사용하지 않는 경우 서식 있는 텍스트가 어떻게 렌더링되는지를 보여 줍니다.

LineBreak 개체를 사용하지 않은 경우 여러 Run 개체를 렌더링하는 TextBlock

Sample text formatting runs.

코드에서 TextBlock 텍스트 모델에 액세스

TextBlock 텍스트 모델과 실질적으로 연관된 두 가지 속성은 TextInlines입니다. 런타임에는 Text 값을 변경하지 않는 것이 좋습니다. 이렇게 하면 개별 Run 항목의 기존 글꼴 요소의 서식이 제거될 뿐 아니라 원래 Text와 인라인 요소를 사용하여 생성된 TextBlock에 대한 LineBreak 요소도 제거될 수 있기 때문입니다. 자세한 내용은 Inlines를 참조하세요.

텍스트 줄 바꿈

TextWrapping 속성은 TextBlock에서 텍스트가 줄 바꿈되는 방식을 선언합니다. 기본적으로 TextBlock은 줄 바꿈되지 않습니다. 줄 바꿈하지 않으면 다른 설정에 따라 텍스트가 다음 중 한 방법으로 처리됩니다.

  • TextBlockWidth가 명시적으로 설정되지 않으면 TextBlock은 포함된 텍스트 크기에 따라 확장되며 ActualWidth의 값이 업데이트됩니다. 그러나 TextBlock은 항상 다른 컨테이너 부모에 포함되고 이는 불가피하게 너비 제약 조건이 설정된 일련의 레이아웃 부모까지 계속됩니다. 따라서 적용되는 레이아웃 제약 조건 너비를 초과할 경우 텍스트가 잘립니다.

  • TextBlockWidth가 명시적으로 설정되면 텍스트가 고정 Width를 초과할 경우 TextBlock 자체에서 텍스트를 자릅니다.

텍스트 줄 바꿈을 사용하려면 TextWrapping을 열거형 값인 Wrap으로 설정합니다. 예를 들어 XAML에서 다음과 같이 설정할 수 있습니다.

<TextBlock Text="The quick red fox jumped over the lazy brown dog." TextWrapping="Wrap" />.

텍스트 줄 바꿈을 사용하면 다음 동작이 수행됩니다.

  • TextBlockWidth가 명시적으로 설정되지 않으면 적용되는 레이아웃 제약 조건 너비에서 텍스트 줄이 바뀝니다.

  • TextBlockWidth가 명시적으로 설정되면 텍스트가 고정 Width에서 줄이 바뀝니다.

TextBlock에 대한 ActualWidth는 확장된 텍스트 크기가 레이아웃 컨테이너에 맞지 않아도 항상 확장된 텍스트 크기를 보고하므로 잘린 텍스트를 프로그래밍 방식으로 검색할 수 있습니다. 클리핑이 적용되는 레이아웃 컨테이너에 대한 Width가 표시되는 위치를 알고 있으면 이러한 두 값을 비교할 수 있습니다.

다음 그림에서는 텍스트 줄 바꿈 동작을 보여 줍니다.

줄 바꿈되지 않은 텍스트와 줄 바꿈된 텍스트를 렌더링하는 TextBlock

Shows text getting cut off.
TextWrapping이 ActualWidth 및 ActualHeight에 미치는 영향

TextWrapping example.

자세한 내용은 TextBlock 또는 TextWrapping을 참조하세요.

여러 줄 TextBlock 텍스트

줄 바꿈을 하거나 LineBreak 요소가 명시적으로 지정되면 TextBlock의 텍스트가 여러 줄로 표시될 수 있습니다. TextBlock의 두 속성인 LineHeightLineStackingStrategy는 여러 줄 텍스트가 표시되는 방법에 영향을 줍니다. LineHeight는 전체 TextBlock에서 모든 콘텐츠 줄 높이를 설정합니다. LineHeight는 실제로는 기준선 간의 높이이므로 LineHeightFontSize보다 작게 설정하면 텍스트가 세로 방향으로 잘릴 수 있습니다. 일반적으로 LineHeight는 설정하지 않고 FontSize에 오프셋을 더한 값을 기준으로 효율적인 줄 높이를 표시하는 기본 동작을 사용합니다. LineStackingStrategy를 사용하면 이 기본 알고리즘에 영향을 줍니다. LineStackingStrategy.MaxHeight(기본값)는 글꼴에 있는 모든 문자의 최대 높이에 대한 효율적인 줄 높이 기준이 됩니다. LineStackingStrategy.BlockLineHeight는 글꼴에 값으로도 저장되는 "블록" 글꼴 디자인 측정에 대한 효율적인 줄 높이 기준이 됩니다.

TextBlock 텍스트 변환 적용

변환은 응용프로그램에서 텍스트의 표시 방식을 변경할 수 있습니다. 변환은 텍스트 요소를 포함하여 여러 UI 요소에 적용될 수 있습니다. 텍스트에 변환을 사용하는 한 예는 시각적인 효과를 위해 변환에 애니메이션 효과를 적용하는 것입니다. 다음은 텍스트에 사용할 수 있는 일부 변환입니다.

텍스트에 변환을 적용할 경우 특정 텍스트 요소 속성을 사용하여 동일하거나 유사한 효과를 얻을 수 있는 다른 방법이 있는지를 먼저 고려해야 합니다. 예를 들어 글꼴 패밀리가 기울임꼴 FontStyle을 지원할 경우 SkewTransform을 적용하는 것보다 글꼴 패밀리의 기울임꼴을 사용하는 것이 더 보기가 좋습니다.

TextBlock 텍스트에 애니메이션 효과 적용

FontSize의 텍스트 크기, TranslateTransform을 통한 위치 및 색을 포함하여 많은 텍스트 속성 값에 애니메이션 효과를 적용할 수 있습니다.

텍스트의 속성(특히 크기 또는 전경 브러시)에 애니메이션 효과를 적용하면 시스템 리소스가 많이 사용될 수 있습니다. 이는 Windows Phone 에서 텍스트를 렌더링할 때 힌팅을 사용하여 각 텍스트 문자 모양을 부드럽게 표시하기 때문입니다. Transform 또는 FontSize를 사용하여 텍스트 크기를 애니메이션하는 경우 Windows Phone 에서는 각 프레임의 문자 모양을 힌팅합니다. 이 작업은 리소스를 많이 사용하고 프레임을 누락시킬 수 있습니다. 응용프로그램에서 큰 텍스트의 동적 배율 변경을 필요로 하는 경우 다음 방법 중 하나를 사용하여 텍스트를 나타내는 것이 나을 수 있습니다.

  • Path 같은 벡터 그래픽을 사용하여 텍스트를 시뮬레이션합니다.

  • 텍스트에 애니메이션 효과를 적용할 요소에서 연결 속성 TextOptions.TextHintingMode의 값을 Animated로 설정합니다. 자세한 내용은 TextOptions를 참조하세요.

Windows Phone 의 핵심 컨트롤 집합에는 TextBox 컨트롤과 파생된 PasswordBox 컨트롤이 있습니다. TextBox는 일반적으로 사용자의 텍스트 입력을 캡처하는 데 사용됩니다. PasswordBox는 일반적으로 인증 시나리오에 사용됩니다. 이러한 컨트롤 간의 기본적인 차이점은 TextBox에 입력된 문자는 그대로 표시되는 반면 PasswordBox 표시에 입력된 문자는 마스킹된다는 것입니다.

TextBox에 키보드 포커스가 있거나 마우스 포인터를 이 항목 위로 이동하면 커서는 보통 IBeam으로 변경됩니다. 이 동작은 기본 템플릿을 기반으로 하며 인스턴스별로 변경될 수 있습니다.

TextBox 텍스트 줄 바꿈

TextBox 컨트롤은 텍스트 줄 바꿈을 지원합니다. 기본적으로 TextWrapping 속성은 NoWrap으로 설정됩니다. 텍스트 줄 바꿈을 하지 않으면 입력된 텍스트가 명시적인 Width 또는 부모 레이아웃 컨테이너에서 부여한 너비 제약 조건을 초과할 경우 텍스트가 스크롤되어 커서가 항상 표시됩니다. TextWrappingWrap으로 설정하면 텍스트가 가로로 스크롤되지 않고 TextBox 내에서 줄 바꿈됩니다. Height 또는 TextBox의 유효 렌더링 높이가 초과될 경우에는 입력 텍스트가 표시되지 않을 수도 있습니다.

여러 줄 TextBox 텍스트

AcceptsReturntrue로 설정할 경우 TextBox는 여러 줄 텍스트를 지원할 수 있습니다. 이 모드에서 Enter/Return 키는 새 줄로 기록됩니다. 이 경우 새 줄에 입력된 모든 문자는 Text 또는 SelectedText 값에 포함될 수 있습니다.

RichTextBox는 형식이 지정된 단락, 인라인 이미지 등의 다양한 콘텐츠를 표시할 수 있도록 하는 컨트롤입니다.

이 섹션에서는 텍스트 표시와 관련된 기타 컨트롤에 대해 설명합니다.

Label

Label은 콘텐츠를 표시하는 컨트롤로, 다른 컨트롤에 연결할 수 있습니다. LabelContentControl에서 파생되며, 역시 텍스트를 표시할 수 있습니다. LabelTarget 속성을 포함하며, 참조 대상인 다른 컨트롤에 연결하기 위한 자동화 지원을 제공합니다. 일반적으로 LabelContent로 문자열만 사용하지만, 텍스트 서식을 보다 자세히 제어하기 위한 컨테이너 요소를 제공할 수도 있습니다. Label은 Windows Phone SDK 클라이언트 라이브러리에서 사용할 수 있습니다.

ItemsControl

ItemsControl은 콘텐츠 프리젠터를 사용하여 텍스트 항목을 표시할 수 있습니다. 항목 내의 텍스트는 단순한 문자열이며 별도의 스타일이나 텍스트 개체 모델을 지원하지 않습니다. 하지만 텍스트 속성의 속성 값 상속 특성을 사용하여 컨트롤 부모에 값을 설정할 수 있으며 이 값은 항목 텍스트에 적용됩니다. ComboBox도 유사한 기능을 가지며 ItemsControl이기도 합니다.

Windows Phone 응용프로그램의 가장 일반적인 작업은 키보드 입력을 처리하는 것입니다. 일반 수준에서 키보드 입력은 UIElement에 구현되는 두 개의 이벤트인 KeyUpKeyDown에 의해 처리됩니다. 그러나 특정 텍스트 요소나 텍스트 컨트롤의 키 또는 텍스트 입력을 처리하는 데는 이러한 특정 이벤트를 사용하지 않는 경우가 많으며 대신 컨트롤 관련 이벤트를 사용합니다.

TextBlock은 읽기 전용 UI 요소이므로 사용자가 직접 텍스트를 변경할 수 없습니다. 또한 TextBlock에 포커스를 설정할 수 없으며 키 이벤트를 발생시키기 위해서는 요소에 포커스를 설정해야 합니다.

TextBox는 사용자 입력을 위한 것으로, 포커스를 받을 수 있으며 키 이벤트를 발생시킵니다. 그러나 TextBox 클래스는 KeyUpKeyDown에 대해 클래스 수준의 처리를 수행합니다. 즉, 이러한 키에 대해 XAML <TextBox KeyDown="tb1_KeyDown" .../> 등의 이벤트 처리기를 등록하면 TextBox 클래스 논리에서 인스턴스에 수신되기 전에 처리되는 이벤트를 표시할 수 있기 때문에 경우에 따라 처리기가 호출되지 않습니다. 이는 컨트롤 설계에 따른 것으로 일부 키는 텍스트로 간주되지 않고 대신 컨트롤 UI 동작에 관련된 키로 간주됩니다. 따라서 KeyUpKeyDown 키는 TextChanged 또는 SelectionChanged 이벤트를 발생시키지 않습니다.

TextBox 또는 파생된 클래스의 모든 키 대소문자에 대해 KeyUpKeyDown 이벤트를 처리해야 하는 경우 AddHandler 메서드를 사용하여 처리기를 연결하면 처리기를 등록할 수 있습니다.

KeyUpKeyDown 이벤트는 라우트된 이벤트입니다. 즉, TextBox에 의해 처리되지 않을 경우 시각적 트리로 버블링되고 후속 부모 요소에서 처리기를 호출할 수 있습니다. Windows Phone 의 라우트된 이벤트에 대한 자세한 내용은 Windows Phone 8의 이벤트를 참조하세요.

TextBox는 양방향 데이터 바인딩 시나리오에 많이 사용됩니다. TextBox.Text는 기본적으로 TextBox에서 포커스를 잃을 때만 대상을 업데이트하여 사용자가 텍스트 입력을 마치기 전에 사용자의 키 입력에서 데이터가 전파되지 않도록 하는 고유 기능을 갖고 있습니다. 양방향 바인딩, 업데이트 메커니즘 및 데이터 유효성 검사에 대한 자세한 내용은 Windows Phone 8의 데이터 바인딩을 참조하세요.

Glyphs 클래스는 텍스트를 표시하는 데도 사용됩니다. GlyphsTextBlock 또는 TextBox보다 하위 수준에서 텍스트를 처리합니다. Glyphs는 해당 텍스트 콘텐츠의 각 문자 모양을 개별 엔터티로 처리하기 위한 것이며 블록 오프셋 및 기타 특성을 개별적으로 제어할 수 있습니다. Text 속성 대신 Glyphs에는 UnicodeString 속성이 있습니다. Glyphs에는 기본값이 적용되지 않으며 글꼴 패밀리 또는 글꼴 크기에 대해서도 적용되지 않습니다. 이 경우 Glyphs 사용자는 FontUri 값에 대해 글꼴 파일 하위 집합을 패키지한다고 가정합니다. 일반적으로 Glyphs용 모델은 Glyphs에서 사용할 수 있는 하위 수준 텍스트 정보 유형을 출력하는 도구를 사용할 때 가장 유용합니다.

Glyphs는 텍스트 요소 속성 값 상속을 위한 텍스트 요소로 간주되지 않습니다. Glyphs는 텍스트 표시를 위해 다른 접근 방법을 사용하므로 Glyphs 속성은 FontFamily 또는 FontSize와 같은 글꼴 요소 속성과 함께 사용되지 않습니다.

Glyphs 클래스를 사용하는 방법에 대한 자세한 내용은 Glyphs를 참조하세요.

표시:
© 2014 Microsoft