更改窗口大小时调整WPF弹出位置

时间:2017-01-17 13:37:58

标签: wpf xaml popup

我试图在按钮上单击弹出窗口,我通过使用弹出控件实现了所需的结果,但我面临的问题是放置。 当弹出窗口打开并且屏幕大小改变时,弹出窗口将保持在同一个位置,这看起来很难看。 知道如何根据屏幕尺寸更改弹出窗口位置吗? 代码段如下:

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

1 个答案:

答案 0 :(得分:0)

您必须连接某些事件才能手动编写代码以根据屏幕大小的变化移动弹出窗口。如果你愿意,你可以直接绑定到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;

这将放在中央屏幕上。 祝你好运,我希望这会有所帮助。 如果有帮助,请标记答案。