¿Puedo establecer programáticamente la posición de una barra de desplazamiento de WPF ListBox? Por defecto, quiero que vaya en el centro.Configuración de la posición de la barra de desplazamiento de un ListBox
Respuesta
para mover la barra de desplazamiento vertical en un cuadro de lista, haga lo siguiente:
- un nombre al cuadro de lista (x: Name = "myListBox")
- Añadir evento Loaded para la ventana (Cargado = "Window_Loaded ")
- Implementar evento cargado usando el método: ScrollToVerticalOffset
Este es un ejemplo de trabajo:
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);
}
}
}
No creo que los ListBox tengan eso, pero ListViews tiene el método EnsureVisible que mueve la barra de desplazamiento al lugar necesario para asegurarse de que se muestra un elemento.
EnsureVisible es una función Windows.Forms, la pregunta era acerca de WPF. En WPF no hay un método EnsureVisible por lo que puedo decir. – Sam
Dim cnt as Integer = myListBox.Items.Count
Dim midPoint as Integer = cnt\2
myListBox.ScrollIntoView(myListBox.Items(midPoint))
o
myListBox.SelectedIndex = midPoint
Depende de si desea que el elemento central solo se muestra, o seleccionado.
esto simplemente lo desplaza a la vista. Necesito que se desplace hasta el centro. Pero gracias – ScottG
acabo de modificar un código de bits de Zamboni y ha añadido cálculo de la posición.
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. Cambio de la posición de la barra de desplazamiento
- 2. ¿Cambiar la posición de la barra de desplazamiento en TextBox?
- 3. posición extraña de la barra de desplazamiento de iScroll
- 4. PrimeFaces barra de desplazamiento de datos en la posición deseada
- 5. Configurar una posición de la barra de desplazamiento
- 6. Cómo controlar la posición de desplazamiento de un ListBox en una aplicación MVVM WPF
- 7. Configuración de la barra de desplazamiento Tamaño de pulgar
- 8. Cómo hacer un marcador de posición de barra de desplazamiento
- 9. js/css: desactivar la barra de desplazamiento, pero mantener la posición de desplazamiento
- 10. WPF - restablecer la posición de desplazamiento de ListBox cuando ItemsSource cambia
- 11. cómo mantener la posición de la barra de desplazamiento en la vista de lista de Android?
- 12. Establecer la posición de desplazamiento
- 13. En un Listbox, ¿cómo puedo obtener el ancho del listbox menos el espacio que ocupa la barra de desplazamiento?
- 14. CListCtrl: ¿Cómo mantener la posición de desplazamiento?
- 15. Preservar una posición de desplazamiento de WPF ListBox cuando la colección cambia
- 16. Evitar que se muestre la barra de desplazamiento vertical de Silverlight ListBox
- 17. Opacidad Div basada en la posición de la barra de desplazamiento
- 18. ¿Cómo obtener la posición de la barra de desplazamiento con Javascript?
- 19. Establecer grosor de la barra de desplazamiento
- 20. Cómo recuperar la posición de la barra de desplazamiento del control webbrowser en .NET
- 21. Desplazamiento de la barra de desplazamiento del navegador
- 22. ¿Cómo sincronizo la posición de desplazamiento de dos divisiones?
- 23. WPF ListBox con ListBox - Virtualización de UI y Desplazamiento
- 24. CSS establecer la posición de desplazamiento predeterminada
- 25. ¿Cómo obtengo la posición de desplazamiento de un documento?
- 26. ¿Cómo puedo establecer la posición de desplazamiento de un UIScrollView?
- 27. Mostrar div cuando la posición de desplazamiento
- 28. Desplazamiento automático listboxitems colocado dentro de un listbox
- 29. Retire la barra de desplazamiento en un cuadro de lista
- 30. estilo de la barra de desplazamiento CSS3 en un div
Esto funcionó muy bien para mí. –
Solo funcionará si ListBox usa la plantilla predeterminada –