弹出窗口使用整个屏幕的宽度和高度 - Windows应用程序

时间:2015-09-27 17:25:21

标签: c# wpf windows-applications

我正在尝试创建一个包含大量TextBlocks,TextBox&Butses和Buttons的自定义对话框。经过一番研究,我已经实施了一个“弹出式”游戏。我的网格中有一些我的表单UI。

如何将弹出对话框置于页面中心。我尝试过使用horizo​​ntalOffset和VerticalOffset,但仍然会在我用来填充弹出窗口的按钮下面填充弹出窗口。

如果你可以指导我朝正确的方向发展,我还有两个问题:

  • 这是在Windows应用程序(平板电脑)中填充自定义对话框的正确方法吗?
  • 如何重复使用其他页面的弹出窗口。?

提前致谢 饶

MainPage.xaml中

 <Button
               x:Name="bFour"
               Content="Popup with buttons and text"
               Height="75" FontSize="32"
               Click="bFour_Click"/>


        <Popup x:Name="Popup1"
               IsOpen="False"
               LayoutUpdated="Popup1_LayoutUpdated"
               HorizontalAlignment="Center"
               VerticalAlignment="Top">
            <StackPanel Background="Blue"
                        Width="5000"
                        Height="5000">
                <TextBlock Text="One" FontSize="54"/>
                <TextBlock Text="Two" FontSize="54"/>
                <Button x:Name="bClosepopup" Content="Close Popup" Click="bClosepopup_Click"/>           
            </StackPanel>

        </Popup>

MainPage.xaml.cs中

 private void bFour_Click(object sender, RoutedEventArgs e)
    {
        //Popup1.HorizontalOffset = r.Next(100, 100);
        //Popup1.HorizontalOffset = (Window.Current.Bounds.Width - gdMain.ActualWidth) / 2;
        //Popup1.VerticalOffset = (Window.Current.Bounds.Height - gdMain.ActualHeight) / 2;
        //Popup1.Height = ActualHeight;
        //Popup1.Width = ActualWidth;
        Popup1.IsOpen = true;
    }

    private void Popup1_LayoutUpdated(object sender, object e)
    {
        if (gdMain.ActualWidth == 0 && gdMain.ActualHeight == 0)
        {
            return;
        }

        double ActualHorizontalOffset = this.Popup1.HorizontalOffset;
        double ActualVerticalOffset = this.Popup1.VerticalOffset;

        double NewHorizontalOffset = (Window.Current.Bounds.Width - gdMain.ActualWidth) / 2;
        double NewVerticalOffset = (Window.Current.Bounds.Height - gdMain.ActualHeight) / 2;

        if (ActualHorizontalOffset != NewHorizontalOffset || ActualVerticalOffset != NewVerticalOffset)
        {
            this.Popup1.HorizontalOffset = NewHorizontalOffset;
            this.Popup1.VerticalOffset = NewVerticalOffset;
        }
    }

1 个答案:

答案 0 :(得分:0)

我认为你缺少2个属性:

尝试使用它们,看看结果是否更好。

编辑1:

不幸的是,Windows应用程序中的Popups与普通的WPF应用程序没有相同的属性。这是documentation。弹出窗口似乎不是实现您想要做的事情的正确方法。

对于另外两个问题: