使用ItemsControl
在Canvas
上显示项目集合。
Probelm是我看不到屏幕上的所有项目(需要使用Scrollbars
),我已经检查了这个post并尝试了相同的操作,但它对我不起作用,Scrollbar
显示但已禁用。我的XAML:
<Grid>
<DockPanel>
<ScrollViewer>
<ItemsControl ItemsSource={Binding MyCollection}>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
....
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</DockPanel>
</Grid>
最佳答案
ItemsControl
默认情况下的模板中没有ScrollViewer ,这与ListBox不同。
摆脱外部的scrollViewer并将ItemsControl的模板设置为包含ScrollViewer。另外,当您将ItemsControl包装在Grid中时,我看不到DockPanel的任何用法。
更改布局,如下所示:
<Grid>
<ItemsControl ItemsSource={Binding MyCollection}>
<ItemsControl.Template>
<ControlTemplate>
<Border
BorderThickness="{TemplateBinding Border.BorderThickness}"
Padding="{TemplateBinding Control.Padding}"
BorderBrush="{TemplateBinding Border.BorderBrush}"
Background="{TemplateBinding Panel.Background}"
SnapsToDevicePixels="True">
<ScrollViewer
Padding="{TemplateBinding Control.Padding}"
Focusable="False">
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding
UIElement.SnapsToDevicePixels}"/>
</ScrollViewer>
</Border>
</ControlTemplate>
</ItemsControl.Template>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
....
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
关于wpf - WPF ItemsControl滚动条,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24982232/