Вопрос

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

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

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

Есть какие-нибудь идеи?

Это было полезно?

Решение

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


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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top