首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF MeasureOverride不适用于我的自定义控件

WPF MeasureOverride不适用于我的自定义控件
EN

Stack Overflow用户
提问于 2013-03-15 17:09:57
回答 1查看 1K关注 0票数 3

我有一个自定义控件,该控件在自定义面板(都是我的)中“托管”。

我的自定义面板有如下代码:

代码语言:javascript
复制
protected override Size MeasureOverride(Size availableSize)
{
  foreach (UIElement child in Children)
  {
     child.Measure(availableSize);

     // Do stuff with the Desired Size.  (This is an example)
     resultSize.Width += child.DesiredSize.Width;
     resultSize.Height = Math.Max(resultSize.Height, child.DesiredSize.Height);

  }
  //.. Other Measure Stuff
}

我放在面板上的所有标准控件都能正常工作。但是我的自定义控件将DesiredSize设置为非常小的宽度(5个像素)。尽管它上面有一个Label,但它至少需要40个像素才能显示。

所以我把这些代码放到我的自定义控件中:

代码语言:javascript
复制
protected override Size MeasureOverride(Size constraint)
{
    var baseSize = base.MeasureOverride(constraint);
    var labelTextWidth = GetStringWidth(label.Content.ToString(), label);

    if (baseSize.Width == 0)
        baseSize.Width = 100;

    if (baseSize.Width < labelTextWidth)
        baseSize.Width = labelTextWidth;

    return baseSize;
}

这将返回一个正确的Size。但是在我的面板的MeasureOverride中,child.DesiredSize并不反映我从子控件的MeasureOverride返回的内容。

,知道它为什么会这么做吗?我能做些什么才能让它正确地将计算出来的度量传递给DesiredSize?中的面板(您不能仅仅设置DesiredSize)。

EN

回答 1

Stack Overflow用户

发布于 2015-01-12 16:20:39

如果自定义控件的MeasureOverride返回正确的大小,但它没有反映在DesiredSize属性中,我只有一个建议。您的子元素由某个容器包装,您可以在自定义面板的MeasureOverride过程中检查子元素的类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15438271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档