2017-02-24 1 views
0

Ich habe zZ sieben verschiedene Paneele mit Knöpfen, textboxes und anderen Einzelteilen in ihnen. Jedes Panel ist horizontal lang und wird derzeit übereinander gestapelt. Alle Panels befinden sich in einem Scroll-Viewer und beginnen nicht sichtbar. Über dem Scroll-Viewer befindet sich ein Listenfeld mit den Namen der sieben verschiedenen Panels, und wenn eines ausgewählt ist, wird dieses Panel sichtbar gemacht. Ich versuche einen Weg zu finden, so dass, wenn ein Panel aus der Listbox ausgewählt wird, dieses Panel an den oberen Rand des Scroll Viewers bewegt wird. Ich habe mir Beispiele für Kontrollbeispiele angesehen, aber sie sagen nicht, wie man in diesem Fall mehrere Elemente in Gruppen oder Panels kontrollieren kann. Tut mir leid, wenn das ein wenig verwirrend ist, danke für jede Hilfe.Ordnen Sie stackpanels mit einigen Einzelteilen in ihnen an - WPF und C#

+0

Haben Sie Viewmodels haben? –

Antwort

0

Zuerst, welche Hauptcontainer-Panel verwenden Sie in ScrollViewer? Wie Sie gesagt haben, sind 7 Platten gestapelt, also nehme ich an, Sie haben eine StackPanel innerhalb ScrollViewer.

Jetzt müssen Sie Children collection von StackPanel manipulieren. Eg;

<ScrollViewer Margin="0,61,0,0"> 
      <StackPanel x:Name="MainPnl"> 
      ... 7 panels ... 
      </StackPanel> 
</ScrollViewer 

Code:

private void ComboBox_SelectionChanged_1(object sender, SelectionChangedEventArgs e) 
    { 
     var item = (sender as ComboBox).SelectedItem; 
     string name = (item as ComboBoxItem).Content.ToString(); 

     Panel pnl = FindName(name) as Panel; 

     int indexof = MainPnl.Children.IndexOf(pnl); 
     MainPnl.Children.RemoveAt(indexof); 

     MainPnl.Children.Insert(0, pnl); 
    } 
+0

Danke, es hat funktioniert! Genau das habe ich gesucht. – andrewvb

Verwandte Themen