WPF窗口位置

时间:2012-01-30 12:30:53

标签: wpf window location

我正在尝试在主显示屏的右下角启动一个窗口(因为它肯定会在多显示器系统上使用)。到目前为止,我已经让它工作了,但窗口首先在屏幕中间某处闪烁一瞬间,然后移动到正确的位置。这就是我所拥有的:

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;
        }));
    }

我已经尝试了一些显而易见的事情,比如隐藏窗口然后在移动完成后再次显示它,但这似乎不起作用,因为它根本就不会显示窗口。

我知道这是一个非常小的问题,但奇怪的是非常烦人,我很乐意将它排序!

1 个答案:

答案 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;
        };
}