2014-11-14 3 views
0

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

В текстовом блоке показан конечный эллипсис, когда контент в любом случае больше ширины многострочного текстового блока (то есть для обнуления текста используется Wrap).

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

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

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

Объект TextBlock должен показать, как показано ниже:

1 ...

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

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

+0

Не использовал бы текстовый блок вместо блока? – pquest

ответ

0

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

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

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