为什么MeasureOverride似乎不提供可用大小?

时间:2018-12-18 22:01:56

标签: xaml custom-controls word-wrap measureoverride

我正在尝试创建一个自定义文本块,每个字母周围都有一个轮廓(笔划)。行程正常。但是,我 am 努力使文字换行。遵循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,但是只有很小的空间可用。所以,如果我给它一个值“ Hi There”,然后是“ Hi”,然后是“ Hi There”

结果是

  • 嗨,那里
  • 然后:

Th

er

e

即使网格或堆栈面板,或者我尝试的其他任何方式,仍然有一些明显未使用的宽度。怎么了?我看过BordersControlstackpanels的代码,它们似乎基本上将最大可用大小传递给了他们的孩子。我想念什么?

0 个答案:

没有答案