我在StackPanel
内有一个ScrollViewer
,我想绑定项目并定义他们的数据模板,因此我使用ItemsControl
。问题似乎是ItemsControl
未实现IScrollSnapPointsInfo,这会破坏与StackPanel
子项和ScrollViewer
相关联的垂直管理点。
当用户滚动时,这些垂直捕捉点应允许绑定到堆栈面板的项目在滚动查看器的垂直中心位置对齐。
Bellow是一些示例代码:
<ScrollViewer x:Name="ScrollViewer"
ZoomMode="Disabled"
ZoomSnapPointsType="None"
VerticalSnapPointsType="Mandatory"
VerticalSnapPointsAlignment="Center">
<ScrollViewer.Content>
<Grid>
<!-- Start StackPanel -->
<StackPanel x:Name="StackPanel" Margin="0,500,0,500" Orientation="Vertical">
<StackPanel.Children>
<ItemsControl ItemsSource="{x:Bind Items, Mode=OneWay}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate x:DataType="model:ScrollItem">
<Button Margin="8,0">
<Button.Content>
<Grid>
<TextBlock Text="Hello" Foreground="Black" FontSize="20" />
</Grid>
</Button.Content>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel.Children>
</StackPanel>
<!-- End StackPanel -->
</Grid>
</ScrollViewer.Content>
</ScrollViewer>
有没有人有这方面的经验?关于如何恢复垂直捕捉点并仍然绑定到堆栈面板的任何建议都会很棒。
理想情况下,我想将项目列表绑定到堆栈面板并在xaml中定义模板。这比在代码中创建元素要好得多......