2014-09-18 5 views
1

Je fais une application Windows universelle.Plein écran avec scrollview

Je veux créer un popup qui va remplir l'écran et faire défiler si le contenu de la popup est plus grand que l'écran.

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); 

créer un pop-up avec elle est un enfant mis ScrollViewer, et la teneur en scrollViewers est un StackPanel qui est plus grand que la hauteur de l'écran.

Si je règle manuellement la hauteur du popup, cela fonctionne comme prévu. Mon problème est d'obtenir la hauteur et la largeur des popups pour remplir l'écran. Laisser la hauteur seule fait de la hauteur la taille du contenu, qui sort de l'écran et ne défile pas.

+3

que diriez-vous d'utiliser une fenêtre avec windowstyle comme none et windowstate comme maximisé. – pushpraj

+0

* Si je règle manuellement la hauteur du popup, cela fonctionne comme prévu * ... alors pourquoi ne faites-vous pas cela? – Sheridan

+0

@pushpraj Je crée une application Windows Universal, je n'ai pas de classe de fenêtre. – Tain

Répondre

2

Vous pouvez définir la largeur et la hauteur à l'aide des System.Windows.SystemParameters.MaximizedPrimaryScreenWidth et des propriétés System.Windows.SystemParameters.MaximizedPrimaryScreenHeight dans le constructeur de la fenêtre comme ceci:

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

est si vous voulez utiliser cette approche. Cependant, @pushpraj recommande le meilleur moyen d'accomplir votre exigence.

+0

Je crée une application Windows universelle, il n'y a pas de paramètres système – Tain

+0

Donnez [this] (http://dotnetbyexample.blogspot.com/2014/06/building-multi-resolution-popups-in.html) un coup alors. Si vous voulez plein écran, vous pouvez simplement passer le paramètre ConverterParameter à la valeur 100. –

+0

Désolé pour la réponse tardive, BaseValueConverter n'existe pas. aussi j'ai besoin de définir la largeur et la hauteur dans C# non xaml. – Tain