Настройка всплывающей позиции WPF при изменении размера окна

Я пытаюсь сделать всплывающее окно на щелчок кнопки, я достигаю желаемого результата с помощью всплывающего элемента управления, но проблема, с которой я сталкиваюсь, — это размещение.
В то время как всплывающее окно открывается и размер экрана изменяется , это всплывающее окно останется на том же месте, и это выглядит уродливо.
Есть идеи, как изменить размещение всплывающих окон в зависимости от размера экрана ?
Фрагмент кода следующий:

<Popup x_Name="AdvancedFlyout" IsOpen="{Binding FlyoutVisibility}" Placement="Left" HorizontalOffset="{Binding ActualWidth,ElementName=btnAdvanced}" VerticalOffset="{Binding ActualHeight,ElementName=btnAdvanced}">

1 ответ

  1. Вам придется подключиться к некоторым событиям, чтобы иметь возможность вручную написать код для перемещения всплывающего окна в соответствии с изменением размера экрана. Можно выполнить привязку непосредственно к SystemParameters.WorkArea.PrimaryScreenWidth если вы хотите, проблема в том, что при открытии всплывающего окна, позиция затем вычисляется, и всплывающее окно помещается так, даже если вы устанавливаете привязки, вещь просто помещается при открытии.

    "{DynamicResource {x:Static SystemParameters.MaximizedPrimaryScreenWidthKey}}"
    

    подключить мероприятие

    yourWindow.SizeChanged += ( o, args ) =>
                                {
                                    YourPopup.HorizontalOffset = SystemParameters.FullPrimaryScreenWidth / 2 - YourPopup.Width / 2;
                                    YourPopup.VerticalOffset = SystemParameters.FullPrimaryScreenHeight / 2 - YourPopup.Height / 2;
                                };
    

    Если вы хотите подключить в размер экрана измененные события в обработчике просто напишите такой код:

            YourPopup.HorizontalOffset = SystemParameters.FullPrimaryScreenWidth / 2 - YourPopup.Width / 2;
            YourPopup.VerticalOffset = SystemParameters.FullPrimaryScreenHeight / 2 - YourPopup.Height / 2;
    

    Это разместится в центре экрана.
    Удачи, и я надеюсь, что это поможет.
    Пожалуйста, отметьте ответ, если это поможет вам.