Изменение размера ярлыков - PullRequest
0 голосов
/ 11 мая 2009

У меня есть график в WPF с большим количеством меток. Текст на этих ярлыках динамически загружается и может быть изменен. Если я установлю ширину только на auto, то эти метки могут перекрываться, что делает текст нечитаемым.

Диаграмма поддерживает несколько размеров, поэтому, если она становится больше, столбцы изменяются и появляется больше места для текста. Теперь я хочу настроить текст в соответствии с доступным пространством. Если он становится слишком маленьким, я больше не хочу отображать метку (имеется всплывающая подсказка, поэтому пользователь по-прежнему получает необходимую информацию). Рассмотрим строку «Случай 1, бла-бла», вероятно, недостаточно места для отображения всей строки, а только первое слово. В этом случае я хочу, чтобы строка была "Case 1 ..", где .. указывает, что во всплывающей подсказке есть еще какая-то информация.

Я могу определить длину, доступную для строки. Но как я могу определить место, которое займет одна буква? Конечно, я мог бы просто изменить размер ярлыка, но тогда он просто обрезал бы строку в любом месте, что, вероятно, не полезно для пользователя (и выглядит уродливо).

Есть идеи?

Ответы [ 2 ]

1 голос
/ 11 мая 2009

Если вы можете использовать TextBlocks вместо меток, тогда у них есть свойство TextTrimming , которое сделает это для вас либо для ближайшего символа, либо для ближайшего слова.


Хотя вы, кажется, довольны свойством TextTrimming, я отредактирую его, добавив, что элемент управления TextBox имеет метод GetRectFromCharacterIndex , который позволит вам определить размер на экране одного или нескольких символов как Пока настройки шрифта соответствуют вашему ярлыку. Это может быть полезно, если вы хотите обрезать в определенных местах метки, а не в ближайшем символе / слове.

0 голосов
/ 11 мая 2009

Не эксперт в WPF, но я думаю, что вам нужно делать это в коде, а не в XAML.

Начните с получения фактической ширины в пикселях пространства, доступного для текста. Затем посмотрите на набор символов, шаг точек и т. Д., Используемые на внешнем интерфейсе XAML, и оттуда вычислите ширину пикселя, требуемую для каждого символа.

Вы также можете посмотреть на изменение размеров символов и уменьшение длины метки.

...