Xaml 带有VirtualzingStackPanel的ItemsControl在ScrollViewer中禁用水平动画
我正在为UWP应用程序构建一个自定义XAML控件,该应用程序严重依赖于带有捕捉点的ScrollViewer 我真的希望绑定到控件的内容被虚拟化,所以我使用的是ItemsControl。但是,当我在ItemsControl中使用VirtualzingStackPanel,然后在ScrollViewer上调用ChangeView以指定水平偏移量时,滚动到新偏移量时的动画效果将被禁用,它只是直接跳到偏移量。如果我简单地将VirtualzingStackPanel替换为StackPanel(无虚拟化),则水平动画可以工作 问题:是否有人知道在更改偏移时如何使用虚拟化StackPanel并启用水平动画 下面是调整customScrollViewer通过树爬行访问的水平偏移量的C,因为它是ControlTemplate样式的一部分:Xaml 带有VirtualzingStackPanel的ItemsControl在ScrollViewer中禁用水平动画,xaml,uwp,uwp-xaml,Xaml,Uwp,Uwp Xaml,我正在为UWP应用程序构建一个自定义XAML控件,该应用程序严重依赖于带有捕捉点的ScrollViewer 我真的希望绑定到控件的内容被虚拟化,所以我使用的是ItemsControl。但是,当我在ItemsControl中使用VirtualzingStackPanel,然后在ScrollViewer上调用ChangeView以指定水平偏移量时,滚动到新偏移量时的动画效果将被禁用,它只是直接跳到偏移量。如果我简单地将VirtualzingStackPanel替换为StackPanel(无虚拟化),
customScrollViewer.ChangeView(500, null, null, false);
下面是ItemsControl的XAML样式:
<Style x:Key="ItemsControlSnapStyle" TargetType="ItemsControl">
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ItemsControl">
<ScrollViewer
x:Name="customScrollViewer"
VerticalScrollBarVisibility="Disabled"
HorizontalScrollBarVisibility="Auto"
HorizontalSnapPointsType="Mandatory">
<ItemsPresenter />
</ScrollViewer>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
谢谢 好问题,我可以复制这种行为,它看起来是经过设计的。从文档中派生。它只能用于显示ItemsControl中的项。通常地首先,从Windows 8.1开始,ItemsStackPanel用作ListView的默认ItemsPanel。如果修改ItemsPanel,我们建议您使用ItemsStackPanel或ItemsRapGrid,而不是VirtualizingStackPanel或WrapGrid 若我们用ItemsStackPanel替换VirtualizingStackPanel,那个么ChangeView方法可以与动画一起工作。ItemsStackPanel也支持虚拟化。因此,我们建议您可以使用ItemsStackPanel作为ItemsControl的ItemsPanel
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<ItemsStackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
很好的问题,我可以复制这种行为,而且它看起来是经过设计的。从文档中派生。它只能用于显示ItemsControl中的项。通常地首先,从Windows 8.1开始,ItemsStackPanel用作ListView的默认ItemsPanel。如果修改ItemsPanel,我们建议您使用ItemsStackPanel或ItemsRapGrid,而不是VirtualizingStackPanel或WrapGrid 若我们用ItemsStackPanel替换VirtualizingStackPanel,那个么ChangeView方法可以与动画一起工作。ItemsStackPanel也支持虚拟化。因此,我们建议您可以使用ItemsStackPanel作为ItemsControl的ItemsPanel
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<ItemsStackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
它工作得很好!老实说,我认为我已经走到了死胡同,没想到会有解决办法。非常感谢。它工作得很好!老实说,我认为我已经走到了死胡同,没想到会有解决办法。非常感谢。