2009-05-11 3 views
0

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

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

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

Любые идеи?

ответ

1

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


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

+0

Я думаю, что TextTrimming - это то, что я искал, thx :) – Nils

0

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

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

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

+0

thx для ответа, но слишком сложно, посмотрим на свойство TextTrimming (см. Ниже) – Nils