문제

라벨이 많은 WPF에 차트가 있습니다. 이 레이블의 텍스트는 동적으로로드되어 변경 될 수 있습니다. 너비를 자동으로 설정하면이 레이블이 겹치면 텍스트를 읽을 수 없게 만듭니다.

차트는 다중 크기를 지원하므로 더 커지면 막대의 크기가 재조정되고 텍스트를위한 더 많은 공간이 있습니다. 이제 사용 가능한 공간에 텍스트를 조정하고 싶습니다. 너무 작아지면 더 이상 레이블을 표시하고 싶지 않습니다 (툴팁을 사용할 수 있으므로 사용자는 여전히 필요한 정보를 얻습니다). 문자열 "case 1, blah blah"를 고려하십시오. 전체 문자열을 표시 할 공간이 충분하지 않을 것입니다. 첫 번째 단어 만 있습니다. 이 경우 문자열이 "case 1 .."가되기를 원하고, 툴팁에 더 많은 정보가 있음을 나타냅니다.

문자열에 사용 가능한 길이를 결정할 수 있습니다. 그러나 단일 편지가 취할 공간을 어떻게 결정할 수 있습니까? 물론 나는 라벨을 다시 크기를 줄일 수 있지만, 사용자에게 도움이되지 않는 곳에서 줄을 잘라 내고, 추악 해 보인다.

어떤 아이디어?

도움이 되었습니까?

해결책

라벨 대신 텍스트 블록을 사용할 수 있다면 텍스트 트리밍 가장 가까운 캐릭터 또는 가장 가까운 단어로이를 수행하는 속성.


텍스트 트리밍 속성에 만족하는 것처럼 보이지만 텍스트 상자 컨트롤에 getRectFromCharacterIndex 글꼴 설정이 레이블과 일치하는 한 하나 이상의 문자의 화면에서 크기를 찾을 수있는 방법. 가장 가까운 문자 / 단어가 아닌 레이블의 특정 장소에서 트리밍하려는 경우 유용 할 수 있습니다.

다른 팁

WPF의 전문가는 아니지만 XAML이 아닌 코드 로이 작업을 수행해야한다고 생각합니다.

텍스트에 사용할 수있는 공간의 실제 픽셀 너비를 얻는 것으로 시작하십시오. 그런 다음 XAML 프론트 엔드에 사용 된 캐릭터 세트, 도트 피치 등을 살펴보고 문자 당 필요한 픽셀 너비를 계산합니다.

또한 캐릭터 크기를 변경하고 레이블 길이를 줄이는 것을 볼 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top