Cách chính xác để truy xuất vị trí của cửa sổ trong WPF là gì?Cửa sổ ActualTop, ActualLeft
Đây là một số nỗ lực tôi đã thực hiện. Lần đầu tiên, rõ ràng là
Point GetPosition(Window win)
{
return new Point(win.Top, win.Left);
}
nhưng điều này trả về vị trí "sai" khi cửa sổ được phóng to. nỗ lực thứ hai:
Point GetPosition(Window win)
{
if (win.WindowState == WindowState.Maximized)
return new Point(0, 0);
else
return new Point(win.Top, win.Left);
}
Hầu như ở đó, nhưng vẫn còn là một vấn đề: khi bạn có hai (hoặc nhiều hơn) màn hình và cửa sổ là tối đa trong màn hình thứ hai bạn sẽ có được một (0, 0) vị trí đó không làm phản ánh vị trí thực tế của cửa sổ.
Tôi nhận thấy rằng Window có _actualTop và _actualTính viên riêng tư, nhưng không có thuộc tính công khai để hiển thị chúng.
Làm cách nào để bạn lấy giá trị chính xác?
Cảm ơn Hans, P/Invoking GetWindowRect() thực sự giải quyết được vấn đề. Không quá đẹp nhưng hoạt động như mong đợi. Cảm ơn một lần nữa! –
Điều gì sai với 'Point leftTop = this.PointToScreen (điểm mới (0, 0));'? – springy76
Khác với nó không phải là mã WPF, chỉ cần thử nó và đặt thanh tác vụ ở bên trái. –