Saya mengikuti "tutorial" kecil ini tentang cara menambahkan scrollbar ke ItemsControl, dan berfungsi dalam tampilan Designer, tetapi tidak ketika saya mengkompilasi dan menjalankan program (hanya beberapa item pertama yang muncul, dan tidak ada scrollbar untuk melihat lebih banyak - bahkan ketika VerticalScrollbarVisibility diatur ke "Visible" bukannya "Auto").
Adakah cara untuk mengatasi ini?
Ini adalah kode yang saya gunakan untuk menunjukkan item saya (biasanya saya bekerja dengan Penyatuan Data, tetapi untuk melihat item di Desainer saya, saya menambahkannya secara manual):
<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>
Dan ini Template saya:
<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>
Anda harus memodifikasi templat kontrol alih-alih ItemsPanelTemplate:
Mungkin, kode Anda tidak berfungsi karena StackPanel memiliki fungsi gulir sendiri. Cobalah untuk menggunakan properti StackPanel.CanVerticallyScroll .
sumber
Masukkan ScrollViewer Anda di DockPanel dan atur properti DockPanel MaxHeight
sumber