WPF AutomationPeer 不返回边界矩形
WPF AutomationPeer not returning Bounding Rectangle
我有两个 class 正在使用的拇指控件:
AutomatedThumb
TouchEnabledThumb
TouchEnabledThumb
class 就是对基本 WPF 缩略图 class 的扩展。 AutomatedThumb
是我的实验。
我无法让 UI 自动化框架与控件进行交互。起初它们出现在 UI Automation Verify 中,显示为灰色,没有边界框。我已经为控件编写了自动化对等 classes 并给了它们两个 OnCreateAutomationPeer
覆盖,这导致控件在 UIAV 中不再变灰,但是 none这些控件 return 是一个边界矩形,所以我无法将鼠标移到它们上面进行交互。
我一直在尝试使用 Owner.RenderTransform.TransformBounds(new Rect(Owner.RenderSize))
覆盖 GetBoundingRectangleCore
,但它们从来没有 return 自动化树的边界框。
有什么想法吗?
提前致谢!
更新
我试过 GetBoundingRectanbleCore
return 一个值为 (1.0, 1.0, 5.0, 5.0)
的 Rect
并且边界框显示如我所愿。我只需要弄清楚如何获取实际控件的边界矩形。
我发现 GetBoundingRectangleCore
的 Thumb
控件和派生控件存在问题。返回的 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;
}
我希望这可以帮助其他正在努力解决这个问题的人。
我有两个 class 正在使用的拇指控件:
AutomatedThumb
TouchEnabledThumb
TouchEnabledThumb
class 就是对基本 WPF 缩略图 class 的扩展。 AutomatedThumb
是我的实验。
我无法让 UI 自动化框架与控件进行交互。起初它们出现在 UI Automation Verify 中,显示为灰色,没有边界框。我已经为控件编写了自动化对等 classes 并给了它们两个 OnCreateAutomationPeer
覆盖,这导致控件在 UIAV 中不再变灰,但是 none这些控件 return 是一个边界矩形,所以我无法将鼠标移到它们上面进行交互。
我一直在尝试使用 Owner.RenderTransform.TransformBounds(new Rect(Owner.RenderSize))
覆盖 GetBoundingRectangleCore
,但它们从来没有 return 自动化树的边界框。
有什么想法吗?
提前致谢!
更新
我试过 GetBoundingRectanbleCore
return 一个值为 (1.0, 1.0, 5.0, 5.0)
的 Rect
并且边界框显示如我所愿。我只需要弄清楚如何获取实际控件的边界矩形。
我发现 GetBoundingRectangleCore
的 Thumb
控件和派生控件存在问题。返回的 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;
}
我希望这可以帮助其他正在努力解决这个问题的人。