构建所有东西的工作量太大,但是以下内容应该可以引导您实现目标:
从 Listview 继承添加创建一个 'PartialListView' ,添加依赖属性 StartIndex 和 ItemHeight。它应该构建一个正确高度的列表视图,显示从 StartIndex 到 StartIndex+ItemHeight 的项目。(scroller 未显示。在 listView 加载后使用 FindDescendant (scrollviewer 类型) 找到 scrollViewer,并设置它的 VerticalOffset)
创建具有两个依赖属性的 UserControl:
1) 绑定到 MenuItems (Item, Calories, ...) 的 ObservableCollection
2) ItemHeight (整数属性)。
然后在每次集合更改时修改 IndexList,这是一个数字 {1,6,11} 的 Observable 集合,它们是每个菜单的第一个索引。
控制代码将如下所示:
<ListBox ItemsSource="{Binding IndexList, ElementName = mycontrolname}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<ScrollViewer x:Name="PageScroller" ... set to horizontal only, not
showing any bar >
<StackPanel Orientation="Horizontal" />
</ScrollViewer>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<app:PartialListView StartIndex="{Binding }"
IndexCount = "{Binding IndexCount, ElementName = mycontrolname}"
ItemsSource = "{Binding MenuItems , ElementName = mycontrolname}"
/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
切换“屏幕”将通过更改 PageScroller ScrollViewer 的 HorizontalOffset 来完成。