如何获得wpf按钮屏幕矩形

时间:2010-09-26 19:32:38

标签: c# wpf

您好我正在尝试获取wpf按钮的屏幕矩形,以便我可以突出显示它。

我用它来达到同样的目的:

AutomationPeer theBtnPeer = createPeerForElement(btn); Rect rect = theBtnPeer.GetBoundingScreenRectangle();

这很好用,给我正确的矩形。

但是..如果按钮当前不可见,那么我在这个btn上调用BringIntoView()成功地将这个按钮带入视图,但是当我再次调用它上面的GetBoundingSCreenRectangle()时。它给了我与之前调用BringIntoView()之前相同的旧值。

如何获取此按钮的新边界矩形?

由于

2 个答案:

答案 0 :(得分:1)

您可以通过ActualHeight和ActualWidth属性获取矩形的高度和宽度。

窗口中的坐标取决于按钮所在的布局控件的类型。

如果您的目标是高亮,我建议另一条路线:更改按钮的模板以包含一个高亮矩形,默认情况下不可见,并带有触发器,以便在满足某些条件时使其可见。

或使用视觉状态,具有突出显示和未突出显示的状态,并具有使高亮矩形可见的过渡。

答案 1 :(得分:0)

如果问题是未更新位置属性,请调用ScrollViewer.UpdateLayout()以强制重新计算与布局相关的属性。

如果问题是该方法始终为给定控件返回相同的值,那么您可能正在寻找Visual.PointToScreen()方法。这将为您提供相对于屏幕左上角的绝对坐标。在你的按钮上调用它,如:

btn.PointToScreen(new Point(0, 0));

您要对返回的矩形做什么?您是否定位与按钮,弹出窗口或其他内容位于同一容器中的内容?如果您可以扩展示例代码以提供使用生成的矩形的代码部分,那么这将有助于我们确定问题所在。