是否可以在StackPanel中绑定子项并保留垂直SnapPoints?

时间:2018-05-17 19:04:29

标签: c# xaml uwp

我在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中定义模板。这比在代码中创建元素要好得多......

0 个答案:

没有答案