Czy mogę programowo ustawić pozycję paska przewijania ListBox WPF? Domyślnie chcę, aby trafił w centrum.Ustawianie pozycji paska przewijania ListBox
Odpowiedz
Aby przesunąć pionowego paska przewijania w ListBox wykonaj następujące czynności:
- Nazwa Twój pole listy (x: Name = "myListBox")
- Dodaj Loaded imprezę dla okna (Loaded = "Window_Loaded „)
- zrealizować za pomocą metody Loaded zdarzenie: ScrollToVerticalOffset
Oto próbka robocza:
XAML:
<Window x:Class="ListBoxScrollPosition.Views.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Loaded="Window_Loaded"
Title="Main Window" Height="100" Width="200">
<DockPanel>
<Grid>
<ListBox x:Name="myListBox">
<ListBoxItem>Zamboni</ListBoxItem>
<ListBoxItem>Zamboni</ListBoxItem>
<ListBoxItem>Zamboni</ListBoxItem>
<ListBoxItem>Zamboni</ListBoxItem>
<ListBoxItem>Zamboni</ListBoxItem>
<ListBoxItem>Zamboni</ListBoxItem>
<ListBoxItem>Zamboni</ListBoxItem>
<ListBoxItem>Zamboni</ListBoxItem>
<ListBoxItem>Zamboni</ListBoxItem>
<ListBoxItem>Zamboni</ListBoxItem>
<ListBoxItem>Zamboni</ListBoxItem>
<ListBoxItem>Zamboni</ListBoxItem>
</ListBox>
</Grid>
</DockPanel>
</Window>
C#
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// Get the border of the listview (first child of a listview)
Decorator border = VisualTreeHelper.GetChild(myListBox, 0) as Decorator;
if (border != null)
{
// Get scrollviewer
ScrollViewer scrollViewer = border.Child as ScrollViewer;
if (scrollViewer != null)
{
// center the Scroll Viewer...
double center = scrollViewer.ScrollableHeight/2.0;
scrollViewer.ScrollToVerticalOffset(center);
}
}
}
Nie sądzę, że ListBoxe to ma, ale ListViews ma metodę EnsureVisible, która przenosi pasek przewijania do miejsca potrzebnego, aby upewnić się, że element jest pokazany.
EnsureVisible jest funkcją Windows.Forms, pytanie było o WPF. W WPF nie ma metody "AllowVisible", o ile mogę powiedzieć. – Sam
Dim cnt as Integer = myListBox.Items.Count
Dim midPoint as Integer = cnt\2
myListBox.ScrollIntoView(myListBox.Items(midPoint))
lub
myListBox.SelectedIndex = midPoint
To zależy od tego, czy chcesz po prostu element środkowy pokazano, lub wybrane.
to po prostu przewija to do widoku. Potrzebuję go, aby przewinąć w prawo do centrum. Ale dziękuję – ScottG
Właśnie zmienił kod bitowej Zamboni i dodał obliczenia pozycji.
var border = VisualTreeHelper.GetChild(list, 0) as Decorator;
if (border == null) return;
var scrollViewer = border.Child as ScrollViewer;
if (scrollViewer == null) return;
scrollViewer.ScrollToVerticalOffset((scrollViewer.ScrollableHeight/list.Items.Count)*
(list.Items.IndexOf(list.SelectedItem) + 1));
- 1. Zmiana pozycji paska przewijania
- 2. Zapobieganie wyświetlaniu pionowego paska przewijania Silverlight ListBox
- 3. Ustawianie wybranej pozycji w polu ListBox bez zapętlenia
- 4. Konserwacja zwiniętej pozycji przewijania ListBox WPF po zmianie kolekcji
- 5. listbox; liczba wybranych pozycji
- 6. Orientacja pozycji listbox na poziomą
- 7. Uzyskaj wartość pozycji przewijania
- 8. Przesunięcie paska przewijania przeglądarki
- 9. Animate.CSS Dodawanie paska przewijania?
- 10. Zmiana szerokości paska przewijania
- 11. Tworzenie paska przewijania
- 12. Szerokość paska przewijania CSS
- 13. Uzyskaj wartość pozycji listbox według indeksu
- 14. Animacja slajdów ListBox na nowej pozycji Dodano
- 15. Widok z paska menu pozycji
- 16. Jak zmienić kolor paska przewijania
- 17. Ukrywanie paska przewijania w podzbiorze
- 18. Przewijany, ale bez paska przewijania
- 19. Dostosowywanie paska przewijania przez QListWidget
- 20. Dlaczego nie mam paska przewijania?
- 21. W polu Listbox, w jaki sposób mogę uzyskać szerokość listbox minus miejsce zajmowane przez pasek przewijania?
- 22. Jak kontrolować pozycję przewijania ListBox w aplikacji WPV MVVM
- 23. Jak zwiększyć szerokość paska przewijania w przeglądarce przewijania WPF?
- 24. Zwijanie paska narzędzi Wyłączanie i ukrywanie paska narzędzi podczas przewijania
- 25. WP7 Zapobieganie przewijaniu ListBox
- 26. Jak uzyskać i ustawić pozycje paska przewijania TChromium?
- 27. Ustawianie pozycji kursora w widgecie Tekst
- 28. jquery Ustawianie pozycji kursora w contenteditable div
- 29. Ustawianie pozycji tabeli w wielu wątkach
- 30. React ustawić przewijania pozycji przed składnikiem zamontować
To działało świetnie dla mnie. –
Będzie działać tylko wtedy, gdy ListBox użyje domyślnego szablonu –