eu segui este pequeno "tutorial" sobre como adicionar uma barra de rolagem a um ItemsControl, e ele funciona na visualização Designer, mas não quando eu compilo e executo o programa (apenas os primeiros itens aparecem e nenhuma barra de rolagem para ver mais - até quando VerticalScrollbarVisibility estiver definido como "Visible" em vez de "Auto").
Alguma idéia de como resolver isso?
Este é o código que eu uso para mostrar meus itens (normalmente eu trabalho com ligação de dados, mas para ver os itens no meu Designer eu os adicionei 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>
E este é o meu modelo:
<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>
wpf
wpf-controls
itemscontrol
scrollviewer
Xuntar
fonte
fonte
Você precisa modificar o modelo de controle em vez de ItemsPanelTemplate:
Talvez o seu código não funcione porque o StackPanel possui uma funcionalidade de rolagem própria. Tente usar a propriedade StackPanel.CanVerticallyScroll .
fonte
Coloque seu ScrollViewer em um DockPanel e defina a propriedade DockPanel MaxHeight
fonte