如果MainWindow
距离屏幕边缘太近,打开具有相对定位的New Window
可能会偏离屏幕。
我想让它检测到它在屏幕外并重新定位在边缘附近,甚至与MainWindow
重叠。对于顶部,底部,左侧和右侧。
示例项目来源
https://www.dropbox.com/s/3r2guvssiakcz6f/WindowReposition.zip?dl=0
private Boolean IsWindowOpened = false;
// Info Button
//
private void buttonInfo_Click(object sender, RoutedEventArgs e)
{
MainWindow mainwindow = this;
// Start Info Window
InfoWindow info = new InfoWindow(mainwindow);
// Only Allow 1 Window Instance
if (IsWindowOpened) return;
info.ContentRendered += delegate { IsWindowOpened = true; };
info.Closed += delegate { IsWindowOpened = false; };
// Position Relative to MainWindow
info.Left = mainwindow.Left - 270;
info.Top = mainwindow.Top + 0;
// Open Info Window
info.Show();
}
1280x720屏幕示例
MainWindow
中心屏幕
InfoWindow
-270px Left,0px Top
关闭屏幕
MainWindow
屏幕左上角
InfoWindow
-270px Left,0px Top
在屏幕中重新定位
MainWindow
屏幕左上角
InfoWindow
-160px左,0px顶
答案 0 :(得分:0)
这类问题没有捷径可走。你必须弄清楚你正在使用的屏幕的尺寸,然后手动调整信息窗口的位置。
看看这篇StackOverflow帖子:How to get the size of the current screen in WPF?