Расположение окна WPF - PullRequest
       0

Расположение окна WPF

2 голосов
/ 30 января 2012

Я пытаюсь запустить окно в правом нижнем углу основного дисплея (так как оно определенно будет использоваться в системах с несколькими мониторами).Пока у меня это работает, но окно сначала мигает где-то посередине экрана в течение доли секунды, а затем перемещается в правильное место.Вот что у меня получилось:

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 Ответ

2 голосов
/ 30 января 2012

Установить расположение окна в обработчике событий 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;
        };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...