wpf 如何显示一个窗口,其中页和SizeToContent属性位于所有者的中心?

qlfbtfca  于 2023-02-13  发布在  其他
关注(0)|答案(1)|浏览(113)

我有一个具有以下属性的打开窗口:

<Window x:Class="Shdb.Windows.PopupWindow"
    WindowStartupLocation="CenterOwner"
    SizeToContent="WidthAndHeight">
<DockPanel>
    <Frame x:Name="PopupFrame" NavigationUIVisibility="Hidden"></Frame>
</DockPanel>
</Window>

主窗口:

<Window x:Class="Shdb.MainWindow"
    WindowStartupLocation="CenterScreen">
</Window>

所有者设置如下:

PopupWindow popupWindow = new PopupWindow { Owner = mainWindow };
popupWindow.PopupFrame.Navigate(new MyProfile());
popupWindow.ShowDialog();

另外,第一个窗口包含DockPanel和Frame,任意大小的窗口位于其中。当设置SizeToContent="WidthAndHeight"属性时,WindowStartupLocation="CenterOwner"属性停止正常工作。整个弹出窗口显示在所有者中心的右下角。如何显示页面位于所有者中心的窗口,同时窗口采用页面的宽度和高度?

qnakjoqk

qnakjoqk1#

我可以用这种方法解决这个问题,但是似乎有一种更好的方法。处理程序被添加到弹出窗口中的页面。

MainWindow mainWindow = (MainWindow)Application.Current.MainWindow;

        private void Page_Loaded(object sender, RoutedEventArgs e)
        {
            Window popupWindow = Window.GetWindow(this);

            if (mainWindow.Width > popupWindow.Width)
                popupWindow.Left = mainWindow.Left + (mainWindow.Width - popupWindow.Width) / 2;
            else
                popupWindow.Left = mainWindow.Left - (popupWindow.Width - mainWindow.Width) / 2;

            if (mainWindow.Height > popupWindow.Height)
                popupWindow.Top = mainWindow.Top + (mainWindow.Height - popupWindow.Height) / 2;
            else
                popupWindow.Top = mainWindow.Top - (popupWindow.Height - mainWindow.Height) / 2;
        }

相关问题