Ich habe dieses kleine "Tutorial" zum Hinzufügen einer Bildlaufleiste zu einem ItemsControl befolgt und es funktioniert in der Designer-Ansicht, jedoch nicht, wenn ich das Programm kompiliere und ausführe (nur die ersten Elemente werden angezeigt und keine Bildlaufleiste, um mehr anzuzeigen - sogar wenn VerticalScrollbarVisibility auf "Sichtbar" anstelle von "Auto" gesetzt ist).
Irgendeine Idee, wie man das löst?
Dies ist der Code, mit dem ich meine Elemente anzeige (normalerweise arbeite ich mit Datenbindung, aber um die Elemente in meinem Designer anzuzeigen, habe ich sie manuell hinzugefügt):
<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>
Und das ist meine Vorlage:
<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>
Sie müssen die Steuerelementvorlage anstelle von ItemsPanelTemplate ändern:
Möglicherweise funktioniert Ihr Code nicht, da StackPanel über eine eigene Bildlauffunktion verfügt. Versuchen Sie, die StackPanel.CanVerticallyScroll- Eigenschaft zu verwenden.
quelle
Legen Sie Ihren ScrollViewer in ein DockPanel und legen Sie die DockPanel MaxHeight-Eigenschaft fest
quelle