WPF MultiLine TextTrimming

У нас есть случай, когда нам нужно отобразить многогранный символьный символ (т.е. показать текст как обрезанный), когда у нас есть многострочный текст.

Текстовый блок показывает конечный многоточие, когда содержимое в любом случае превышает ширину многострочного TextBlock (т. Е. Для TextWrapping установлено значение Wrap).

Но у нас есть случай, когда нам нужно показать только одну строку с многоточием независимо от того, больше ли ширина первой строки над шириной текстового блока или нет.

Например, рассмотрим следующий образец текста

String str = "1\n2\n3456\n45889";
textBlock.Text = str;

TextBlock должен отображаться как показано ниже:

1...

и подсказка покажет весь текст. Я попытался провести некоторое исследование возможностей, но не смог найти особой помощи, и мне было интересно, сталкивался ли кто-нибудь в сообществе с такой ситуацией или, возможно, мог бы предложить мне?

Поскольку мы не должны изменять базовый объект данных (сценарий в реальном времени), а только изменять то, что отображается для пользователя, я предполагаю, что конвертер должен справиться, но я все еще застрял в том, как действовать дальше. Или у вас есть другие альтернативы?

1 ответ

Создайте пользовательский элемент управления на основе текстового блока, который обрабатывает бизнес-логику, необходимую для эллипса.

Привязка фактического текста к определенному свойству может гарантировать, что текст не изменяется. Находясь в отдельном свойстве, у вас есть визуальный текст с эллипсом, который обновляется при изменении исходного текста (событие изменения свойства зависимости), а визуальный текст впоследствии отображается на экране. Также имейте подсказку, привязанную к исходному тексту, которая помогает в этом сценарии показывать фактический текст, а не эллиптический текст.

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

Другие вопросы по тегам