Почему MeasureOverride не обеспечивает доступный размер? - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь создать собственный текстовый блок с контуром (обводка) вокруг каждой буквы.Штрих работает нормально.Однако я изо всех сил пытаюсь получить текст для переноса.Следуя документации для 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 и стековых панелей , и все они, по-видимому, в основном передают максимально доступный размер своим дочерним элементам / дочерним элементам дляиграть с.Чего мне не хватает?

...