首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF AutomationPeer不返回边界矩形

WPF AutomationPeer不返回边界矩形
EN

Stack Overflow用户
提问于 2015-08-24 16:49:22
回答 1查看 379关注 0票数 1

我用了两种拇指控制装置:

  • AutomatedThumb
  • TouchEnabledThumb

TouchEnabledThumb类就是这样,并扩展到基本的WPF拇指类。AutomatedThumb是我的一个实验。

我很难让UI自动化框架与控件交互。一开始,他们出现在UI自动化中,验证没有边框的灰色。我为控件编写了自动化对等类,并为它们提供了两个OnCreateAutomationPeer重写,这使得这些控件在UIAV中不再是灰色的,但是没有一个控件返回边界矩形,因此我无法将鼠标移动到它们之间进行交互。

我一直试图使用GetBoundingRectangleCore覆盖Owner.RenderTransform.TransformBounds(new Rect(Owner.RenderSize)),但它们从来没有将边界框返回到自动化树。

有什么想法吗?

提前感谢!

更新

我尝试过让GetBoundingRectanbleCore返回一个值为(1.0, 1.0, 5.0, 5.0)Rect,然后按我所希望的方式显示边框。我只需要弄清楚如何得到实际控件的边框。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-24 21:59:41

我发现GetBoundingRectangleCore对于Thumb控件和派生控件存在一个问题。返回的Rect对象显示的左上角与预期的一样,但它有一个高度和宽度的0,这似乎使自动化树反常,并没有显示边界框。

因此,我和一个同事想出了如下解决方案:

代码语言:javascript
复制
protected override GetBoundingRectangleCore()
{
    var result = base.GetBoundingRectangleCore();
    if(result.Width == 0 || result.Height == 0)
        return new Rect(result.TopLeft, new Point(result.Left + 1, result.Bottom + 1));

    return result;
}

我希望这能帮助其他人解决这个问题。

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

https://stackoverflow.com/questions/32187574

复制
相关文章

相似问题

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