带有scrollview的全屏弹出窗口

时间:2014-09-18 04:59:22

标签: c# wpf win-universal-app

我正在制作一个Windows通用应用程序。

我想创建一个填充屏幕的弹出窗口,如果弹出窗口中的内容大于屏幕,则滚动。

Popup testPopup = new Popup();

StackPanel testStackPanel = new StackPanel();

ScrollViewer testScrollViewer = new ScrollViewer();
testScrollViewer.Background = new SolidColorBrush(Windows.UI.Colors.Green);
testScrollViewer.Height = new GridLength(1, GridUnitType.Star).Value; //this sets the height to one pixel     instead of filling the screen.

Button testPopupButton = new Button();
testPopupButton.Content = "click";
testPopupButton.Click += delegate(object sender, RoutedEventArgs e)
{
    testPopup.IsOpen = true;
};

Button closePopupButton = new Button();
closePopupButton.Content = "close";
closePopupButton.Click += delegate(object sender, RoutedEventArgs e)
{
    testPopup.IsOpen = false;
};

for (int i = 0; i < 20; i++)
{
    Button b = new Button();
    b.Content = i;

    testStackPanel.Children.Add(b);
}

testStackPanel.Children.Add(closePopupButton);

testPopup.Child = testScrollViewer;
testScrollViewer.Content = testStackPanel;
ContentRoot.Children.Add(testPopupButton);
ContentRoot.Children.Add(testPopup);

我创建了一个弹出窗口,其子设置为scrollViewer,scrollViewers内容是一个高于屏幕高度的stackPanel。

如果我手动设置弹出窗口的高度,它会按预期工作。我的问题是让弹出窗口的高度和宽度填满屏幕。单独留下高度会使高度成为内容的大小,从屏幕上移开并且不会滚动。

1 个答案:

答案 0 :(得分:2)

您可以使用窗口构造函数中的System.Windows.SystemParameters.MaximizedPrimaryScreenWidth和System.Windows.SystemParameters.MaximizedPrimaryScreenHeight属性设置宽度和高度,如下所示:

public MainWindow()
{
    InitializeComponent();
    popup.Width = SystemParameters.MaximizedPrimaryScreenWidth;
    popup.Height = SystemParameters.MaximizedPrimaryScreenHeight;
}

如果你想使用这种方法。但是,@ pushpraj建议最好的方法来完成您的要求。