WPF AutomationPeer不返回边界矩形
本文关键字:边界 返回 AutomationPeer WPF | 更新日期: 2023-09-27 18:09:39
我有两类拇指控件我正在工作:
-
AutomatedThumb
-
TouchEnabledThumb
TouchEnabledThumb
类就是这样,扩展到WPF拇指基类。对我来说,AutomatedThumb
是一个实验。
我在让UI自动化框架与控件交互方面遇到了麻烦。起初,它们显示在UI自动化验证中,显示为灰色,没有边界框。我已经为控件编写了自动化对等类,并给他们两个OnCreateAutomationPeer
覆盖,这导致控件不再在uav中变灰,但没有一个控件返回一个边界矩形,所以我不能将鼠标移动到它们进行交互。
我一直在尝试用Owner.RenderTransform.TransformBounds(new Rect(Owner.RenderSize))
来覆盖GetBoundingRectangleCore
,但是他们从来没有返回一个边界框到自动化树。
任何想法?
提前感谢!
我试过让GetBoundingRectanbleCore
返回Rect
与(1.0, 1.0, 5.0, 5.0)
的值和边界框显示,就像我想要的。我只需要弄清楚如何获得实际控件的边界矩形
我发现Thumb
控件的GetBoundingRectangleCore
有问题,因此衍生控件。返回的Rect
对象如预期的那样出现在左上角,但是,它的高度和宽度为0
,这似乎使自动化树变得奇怪,并且没有显示边界框。
所以我和一个同事想出的解决方案如下:
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;
}