2014-07-09 5 views
1

TextBlock 클래스에는 텍스트가 컨트롤의 범위를 초과하면 컨트롤의 동작이 TextTrimming으로 설정되는 속성이 있습니다.Windows 저장 App - C# - 텍스트가 자르면 TextBlock 확인

그러나 TextBlock이 잘려나 간 경우 내 애플리케이션에 알릴 수있는 속성을 찾을 수 없습니다.

문제는 크기가 초과 된 텍스트를 가질 수있는 고정 크기의 TextBlock입니다. 이런 일이 생기면 텍스트를 블록에 맞게 글꼴 크기를 동적으로 조정하려고합니다.

어떻게하면 될까요? 그것은 TextBlock

+1

TextBlock을 Viewbox에 넣으면 필요에 따라 축소되어 표시됩니다. – Jon

답변

0

에 맞을 때까지

의사 코드

// Function added to TextBlock as SizeChanged event handler. 
private void textBlock_SizeChanged(object sender, SizeChangedEventArgs e) 
{ 
    TextBlock textBlock = sender as TextBlock; 
    if(textBlock.IsTrimmed && textBlock.FontSize > 10) // NOTE: IsTrimmed Property does not exist. 
    { 
     textBlock.FontSize -= 10; 
    } 
} 

그런 다음 UI 스레드가 반복적으로 여기에 작동하는 솔루션입니다 텍스트를 축소합니다.

private void textBlock_SizeChanged(object sender, SizeChangedEventArgs e) 
    { 
     TextBlock tb = sender as TextBlock; 

     if (tb != null) 
     { 
      Grid parent = tb.Parent as Grid; 
      if(parent != null) 
      { 
       if(parent.ActualWidth < tb.ActualWidth) 
       { 
        tb.FontSize -= 10; 
       } 
      } 
     } 
    } 

매우 효율적이지는 않지만. 글꼴 크기, 문자열 길이 및 픽셀 너비를 결정하는 데 사용할 수있는 알고리즘이있는 경우이를 향상시킬 수 있습니다.