Создание текстового блока, расширяемого вручную

#c# #wpf #textblock #expander

#c# #wpf #текстовый блок #расширитель

Вопрос:

У меня есть текстовый блок, который имеет начальный объем текста и высоту X. По мере использования пользователем программы строки текста в этом текстовом блоке увеличиваются.

Текстовый блок размещен в расширителе, который находится в scrollview.

Я хотел бы, чтобы текст «Больше …» отображался, когда объем текста в текстовом блоке превышает высоту, а при нажатии на текст «Больше …» высота текстового блока увеличивается, чтобы отобразить весь текст в текстовом блоке. Я не хочу, чтобы текстовый блок прокручивался или автоматически увеличивал свою высоту (поскольку это влияет на другие расширители, работающие в scrollview)

Возможно ли это сделать и как я должен к этому подойти?

Ответ №1:

Создайте подкласс TextBlock и добавьте функциональность для отображения текстовой метки «Подробнее …», которую можно щелкнуть (или как вы решили ее реализовать), когда высота текста внутри текстового блока превышает высоту текстового блока.

Вы можете измерить строку с помощью Graphics.MeasureString() .

Это относится к C #, я ничего не знаю о WPF, возможно, есть более простой способ сделать это с помощью WPF.

Комментарии:

1. Могу ли я сделать это и с помощью stackpanel?

2. @Phaded Я недостаточно знаком с WPF, чтобы сказать наверняка в любом случае, я не понимаю, почему это не было бы невозможным, но я никогда раньше не использовал StackPanel, поэтому, как я уже сказал, я не могу сказать наверняка.