我使用Popup向用户显示验证消息。如果元素(例如文本框)滚出视图,则以下方法工作正常,我可以轻松隐藏弹出窗口。
但是,如果我将窗口部分移出屏幕,那么我将无法再看到该元素,此方法仍然返回true。在这种情况下,弹出窗口仍然可以访问用户(弹出窗口始终保持在屏幕范围内)但元素不是。
如何在屏幕内检查元素是否可见?
答案 0 :(得分:2)
这可以使用SystemParameters中提供的PrimaryScreenWidth和PrimaryScreenHeight来完成。您需要计算相对于屏幕的控件位置,并检查该点是否存在于屏幕边界中。
Point locationFromWindow = this.textBox.TransformToVisual(this).Transform(new Point(0, 0));
Point point = this.textBox.PointToScreen(new Point(0, 0));
Rect rect = new Rect(0, 0, SystemParameters.PrimaryScreenWidth, SystemParameters.PrimaryScreenHeight);
if (!rect.Contains(point))
{
// Outside screen bounds.
}