WPF MultiLine TextTrimming
У нас есть случай, когда нам нужно отобразить многогранный символьный символ (т.е. показать текст как обрезанный), когда у нас есть многострочный текст.
Текстовый блок показывает конечный многоточие, когда содержимое в любом случае превышает ширину многострочного TextBlock (т. Е. Для TextWrapping установлено значение Wrap).
Но у нас есть случай, когда нам нужно показать только одну строку с многоточием независимо от того, больше ли ширина первой строки над шириной текстового блока или нет.
Например, рассмотрим следующий образец текста
String str = "1\n2\n3456\n45889";
textBlock.Text = str;
TextBlock должен отображаться как показано ниже:
1...
и подсказка покажет весь текст. Я попытался провести некоторое исследование возможностей, но не смог найти особой помощи, и мне было интересно, сталкивался ли кто-нибудь в сообществе с такой ситуацией или, возможно, мог бы предложить мне?
Поскольку мы не должны изменять базовый объект данных (сценарий в реальном времени), а только изменять то, что отображается для пользователя, я предполагаю, что конвертер должен справиться, но я все еще застрял в том, как действовать дальше. Или у вас есть другие альтернативы?
1 ответ
Создайте пользовательский элемент управления на основе текстового блока, который обрабатывает бизнес-логику, необходимую для эллипса.
Привязка фактического текста к определенному свойству может гарантировать, что текст не изменяется. Находясь в отдельном свойстве, у вас есть визуальный текст с эллипсом, который обновляется при изменении исходного текста (событие изменения свойства зависимости), а визуальный текст впоследствии отображается на экране. Также имейте подсказку, привязанную к исходному тексту, которая помогает в этом сценарии показывать фактический текст, а не эллиптический текст.
Создавая простой пользовательский элемент управления, вы можете обрабатывать бизнес-логику в одном месте и использовать ее на других экранах и в проектах.