我正在尝试在主显示屏的右下角启动一个窗口(因为它肯定会在多显示器系统上使用)。到目前为止,我已经让它工作了,但窗口首先在屏幕中间某处闪烁一瞬间,然后移动到正确的位置。这就是我所拥有的:
public MyWindow()
{
InitializeComponent();
Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
{
var workingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;
var transform = PresentationSource.FromVisual(this).CompositionTarget.TransformFromDevice;
var corner = transform.Transform(new Point(workingArea.Right, workingArea.Bottom));
this.Left = corner.X - this.ActualWidth;
this.Top = corner.Y - this.ActualHeight;
}));
}
我已经尝试了一些显而易见的事情,比如隐藏窗口然后在移动完成后再次显示它,但这似乎不起作用,因为它根本就不会显示窗口。
我知道这是一个非常小的问题,但奇怪的是非常烦人,我很乐意将它排序!
答案 0 :(得分:2)
在Window.Loaded事件处理程序中设置窗口位置:
public MainWindow()
{
InitializeComponent();
Loaded += (o, e) =>
{
var workingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;
var transform = PresentationSource.FromVisual(this).CompositionTarget.TransformFromDevice;
var corner = transform.Transform(new Point(workingArea.Right, workingArea.Bottom));
this.Left = corner.X - this.ActualWidth;
this.Top = corner.Y - this.ActualHeight;
};
}