Я следил за этим небольшим «учебником» о том, как добавить полосу прокрутки в ItemsControl, и он работает в режиме конструктора, но не тогда, когда я компилирую и выполняю программу (отображаются только первые несколько элементов и нет полосы прокрутки, чтобы просмотреть больше - даже когда для VerticalScrollbarVisibility установлено значение «Visible» вместо «Auto»).
Есть идеи, как это решить?
Это код, который я использую для отображения своих элементов (обычно я работаю с привязкой данных, но чтобы увидеть элементы в моем конструкторе, я добавил их вручную):
<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>
А это мой шаблон:
<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>
Вам нужно изменить шаблон элемента управления вместо ItemsPanelTemplate:
Возможно, ваш код не работает, потому что у StackPanel есть собственная функция прокрутки. Попробуйте использовать свойство StackPanel.CanVerticalScroll .
источник
Поместите свой ScrollViewer в DockPanel и установите свойство DockPanel MaxHeight
источник