Я пытаюсь создать собственный текстовый блок с контуром (обводка) вокруг каждой буквы.Штрих работает нормально.Однако я изо всех сил пытаюсь получить текст для переноса.Следуя документации для MeasureOverride , я создаю свою собственную меру следующим образом:
protected override Size MeasureOverride(Size availableSize)
{
_formattedText.MaxTextWidth = availableSize.Width;
Geometery geo = _formattedText.BuildGeometry(new Point);
Size desiredSize = new Size(geo.Bounds.Width, geo.Bounds.Height);
return desired Size;
}
Результат будет странным - если вы измените текст (так ширина станет меньше),функция MeasureOveride вызывается, как и ожидалось, но с меньшим доступным размером. Разве доступный размер не остается прежним, даже если мне нужно меньше / больше места?
Если я затем снова изменю текст (чтобы ширина становилась больше), вызывается MeasureOverride, но доступно только небольшое пространство.Итак, если я задаю ему значение «Привет!», Затем «Привет!», Затем «Привет!»Привет
, а затем:
Привет
Ч
э
е
, хотяпанель сетки или стека, или что-то еще, что я пробую, все еще имеет некоторую доступную ширину.Что происходит?Я рассмотрел код для Границы , Control и стековых панелей , и все они, по-видимому, в основном передают максимально доступный размер своим дочерним элементам / дочерним элементам дляиграть с.Чего мне не хватает?