ejemplos wpf wpf-controls itemscontrol scrollviewer

ejemplos - WPF: ItemsControl con la barra de desplazamiento(ScrollViewer)



listbox wpf ejemplos (2)

Debe modificar la plantilla de control en lugar de ItemsPanelTemplate:

<ItemsControl > <ItemsControl.Template> <ControlTemplate> <ScrollViewer x:Name="ScrollViewer" Padding="{TemplateBinding Padding}"> <ItemsPresenter /> </ScrollViewer> </ControlTemplate> </ItemsControl.Template> </ItemsControl>

Tal vez, su código no funciona porque StackPanel tiene su propia funcionalidad de desplazamiento. Intenta usar la propiedad StackPanel.CanVerticallyScroll .

Seguí this pequeño "tutorial" sobre cómo agregar una barra de desplazamiento a ItemsControl, y funciona en la vista de Diseñador, pero no cuando compilo y ejecuto el programa (solo aparecen los primeros elementos, y no hay barra de desplazamiento para ver más, incluso cuando VerticalScrollbarVisibility se establece en "Visible" en lugar de "Auto").

Alguna idea sobre como resolver esto?

Este es el código que uso para mostrar mis artículos (normalmente trabajo con Databinding, pero para ver los elementos en mi Designer los agregué manualmente):

<ItemsControl x:Name="itemCtrl" Style="{DynamicResource UsersControlStyle}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Top"> </StackPanel> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <uc:UcSpeler /> <uc:UcSpeler /> <uc:UcSpeler /> <uc:UcSpeler /> <uc:UcSpeler /> </ItemsControl>

Y esta es mi plantilla:

<Style x:Key="UsersControlStyle" TargetType="{x:Type ItemsControl}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ItemsControl}"> <Border SnapsToDevicePixels="true" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}"> <ScrollViewer VerticalScrollBarVisibility="Visible"> <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> </ScrollViewer> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style>


Para obtener una barra de desplazamiento para un ItemsControl , puede alojarlo en un ScrollViewer como este:

<ScrollViewer VerticalScrollBarVisibility="Auto"> <ItemsControl> <uc:UcSpeler /> <uc:UcSpeler /> <uc:UcSpeler /> <uc:UcSpeler /> <uc:UcSpeler /> </ItemsControl> </ScrollViewer>