2017-01-17 7 views
0

Я пытаюсь сделать всплывающее окно нажатием кнопки, я достигаю желаемого результата с помощью всплывающего элемента управления, но проблема, с которой я столкнулась, - это размещение. Пока всплывающее окно открывается и размер экрана изменяется, это всплывающее окно останется в одном месте, и это выглядит уродливым. Любая идея, как изменить всплывающее размещение в соответствии с размером экрана? Во фрагменте кода следующим образом:Отрегулируйте положение всплывающего окна WPF при изменении размера окна

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

ответ

0

Вам придется подключить к некоторым событиям, чтобы иметь возможность вручную писать код, чтобы переместить Popup в соответствии с изменением размера экрана. Вы можете привязать непосредственно к 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; 

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

 Смежные вопросы

  • Нет связанных вопросов^_^