privatevoidWindow_Loaded(object sender,RoutedEventArgs e){//Get the border of the listview (first child of a listview)Decorator border =VisualTreeHelper.GetChild(myListBox,0)asDecorator;if(border !=null){//Get scrollviewerScrollViewer scrollViewer = border.ChildasScrollViewer;if(scrollViewer !=null){//center the Scroll Viewer...double center = scrollViewer.ScrollableHeight/2.0;
scrollViewer.ScrollToVerticalOffset(center);}}}
Dies funktionierte großartig für mich.
Es funktioniert nur, wenn die ListBox verwendet die Standard-Vorlage
Ich glaube nicht, dass Listboxen haben, aber ListViews haben die EnsureVisible Methode verschiebt die scrollbar zum Platz erforderlich, um sicherzustellen, dass ein Element angezeigt wird.
EnsureVisible ist ein windows.Formen-Funktion, die Frage wurde über die WPF. In WPF gibt es keine EnsureVisible-Methode, wie weit ich es sagen kann.
Verschieben Sie die vertikale Bildlaufleiste in eine ListBox Folgendes tun:
Hier ist ein funktionierendes Beispiel:
XAML:
C#
oder
Es hängt davon ab, ob Sie möchten, dass der mittlere Element nur angezeigt oder ausgewählt.
Ich habe nur ein wenig verändert-code von Zamboni und fügte hinzu, positions-Berechnung.
Ich glaube nicht, dass Listboxen haben, aber ListViews haben die EnsureVisible Methode verschiebt die scrollbar zum Platz erforderlich, um sicherzustellen, dass ein Element angezeigt wird.