2009-05-11 6 views
0

많은 레이블이 포함 된 WPF 차트가 있습니다. 이 레이블의 텍스트는 동적으로로드되고 변경 될 수 있습니다. 너비를 자동으로 설정하면이 레이블들이 겹쳐져 읽을 수 없게됩니다.레이블 크기 조정

차트가 여러 크기를 지원하므로 크기가 커지면 막대의 크기가 조정되고 텍스트를위한 공간이 더 넓어집니다. 이제 텍스트를 사용 가능한 공간으로 조정하려고합니다. 너무 작아지면 더 이상 레이블을 표시하고 싶지 않습니다 (툴팁을 사용할 수 있으므로 사용자는 여전히 필요한 정보를 얻습니다). "Case 1, blah blah"라는 문자열을 생각해 보면 전체 문자열을 표시 할 공간이 충분하지 않지만 첫 단어 만 표시 할 수 있습니다. 이 경우 문자열을 "사례 1 .."로하고 싶습니다. .. 자세한 정보가 툴팁에 있음을 나타냅니다.

문자열에 사용할 수있는 길이를 결정할 수 있습니다. 하지만 한 글자의 공간을 어떻게 결정할 수 있습니까? 물론 레이블의 크기를 재조정 할 수도 있지만 사용자에게 도움이되지 않는 곳에서는 문자열을 단절시킬 것입니다 (그리고보기 흉한 것처럼 보입니다).

아이디어가 있으십니까?

답변

1

레이블 대신 TextBlocks를 사용할 수 있다면 가장 가까운 문자 또는 가장 가까운 단어로이 작업을 수행 할 TextTrimming 속성이 있습니다.


당신이 TextTrimming 속성과 행복 보이지만, 내가 TextBox 컨트롤은만큼 당신이 하나 이상의 문자의 화면의 크기를 알 수 있도록 해주는 GetRectFromCharacterIndex 방법을 가지고 추가하려면이를 편집 할 수 있습니다 글꼴 설정이 사용자의 레이블과 일치합니다. 가장 가까운 문자/단어 대신 레이블의 특정 위치에서 자르려는 경우 유용 할 수 있습니다.

+0

TextTrimming은 내가 찾고있는 것입니다. :) – Nils

0

WPF 전문가는 아니지만 XAML 대신 코드에서이 작업을 수행해야한다고 생각합니다.

텍스트에서 사용 가능한 공간의 실제 픽셀 너비를 얻는 것으로 시작하십시오. 그런 다음 XAML 프런트 엔드에서 사용되는 문자 집합, 도트 피치 등을 살펴보고 문자 당 필요한 픽셀 너비를 계산합니다.

문자 길이를 줄이거 나 문자 크기를 변경할 수도 있습니다.

+0

thx하지만 답변이 복잡하지만 TextTrimming 속성 (아래 참조)을 살펴 보겠습니다. – Nils