WPF TextBlock Обрезка текста по центру

TextBlock предоставляет свойство TextTrimming, позволяющее обрезать текст, который не помещается в доступное для элемента пространство. Мне нужно сделать так, чтобы обрезался не конец, а середина: вместо "text..." - "te...xt".

Есть 2 идеи как это реализовать: прикрепляемое свойство и наследование от класса TextBlock. В первом случае нужно ловить событие изменения текста и урезать его, но для этого мы должны знать сколько пространства доступно элементу, чтобы текст грубо не обрезался при отображении: как это понять не ясно. В случаи с наследованием от TextBlock переопределить метод Measure возможным не представляется, так как он является sealed (переопределив Measure мы бы могли получить доступ к availableSize и обрезать текст нужным нам образом).

То есть в любом случае важно понимать сколько места выделено элементу, чтобы текст не был обрезан визуально. Зная это значение мы можем обрезать текст так, как нужно нам, чтобы он полностью поместился в доступную область. Возможно вы подскажите идеи как действовать.


Ответы (0 шт):