2009-03-12 3 views
6

일부 레거시 코드에서 제공하는 System.Drawing.Font 개체를 사용하여 모양을 변경하려고하는 WPF Label 컨트롤이 있습니다. 나는 대부분의 속성을 설정할 수 있었지만, Strikeout과 Underline으로 어려움을 겪고있다.WPF 레이블로 System.Drawing.Font 사용

지금까지 내가 가진 :

System.Drawing.Font font = FontFromLegacyCode(); 

System.Windows.Controls.Label label = new System.Windows.Controls.Label(); 
label.FontFamily = new System.Windows.Media.FontFamily(font.Name); 
label.FontWeight = font.Bold ? System.Windows.FontWeights.Bold : System.Windows.FontWeights.Regular; 
label.FontStyle = font.Italic ? System.Windows.FontStyles.Italic : System.Windows.FontStyles.Normal; 
label.FontSize = font.Size; 

어떻게 글꼴 삼진을 설정 또는 속성을 강조합니까? 더 나은 컨트롤을 사용할 수 있습니까?

답변

8

TextBlock 컨트롤로 변경했습니다. TextBlock 컨트롤에는 사용할 수있는 TextDecorations 속성이 있습니다.

<TextBlock Name="textBlock" TextDecorations="Underline, Strikethrough" /> 

또는 실제로 마음에 드시면 Label 안에 TextBlock을 붙일 수 있습니다 (단, TextBlock 만 사용하고 있음).

<Label Name="label"> 
    <TextBlock Name="textBlock" TextDecorations="Underline, Strikethrough" /> 
</Label> 

TextDecorations 클래스를 살펴보십시오.

대부분의 상황에서 TextBlocks가 Labels보다 더 적합하다는 것을 알았습니다. 차이점은 blog post입니다. 가장 큰 차이점은 Label이 컨트롤 인 반면 TextBlock은 FrameworkElement라는 점입니다. 또한 레이블은 액세스 키를 지원합니다.

+0

완벽하게하십시오. 처음에는 TextBlock을 사용해야했습니다. – bstoney

1

이미 가지고있는 코드를 살펴보면 문제가있을 수 있습니다. WPF에서

글꼴 크기를 인치 구십육분의 일로 표현하고, 인치 칠십이분의 일 같은 Windows 형태로되어 Windows Form and WPF Property mapping에 MSDN에 그들은 설명을합니다. 해당 변환은 다음과 같습니다.

Windows Forms 글꼴 크기 = WPF 글꼴 크기 * 72.0/96.0.

+1

방금 ​​WinForms 요소 호스트에서 WPF를 사용하는 경우에도이 메서드를 사용했기 때문에 크기를'(FontSize * 96)/72'로 변경할 수 있습니다. Windows 폼 환경에 저장된 글꼴 크기가 있고이를 텍스트 블록이나 텍스트 상자와 같은 호스팅 된 WPF 컨트롤의 WPF FontSize로 변환해야하는 경우입니다. –

관련 문제