我一直在为选取框式图像滚动控制而苦苦挣扎。
有一刻,我坚持使用模板化的 ItemsControl:
<Window.Resources>
<DataTemplate x:Key="itemsTemplate">
<Image Source="{Binding AbsolutePath}"></Image>
</DataTemplate>
</Window.Resources>
<ItemsControl ItemTemplate="{StaticResource itemsTemplate}" x:Name="ic"
ItemsSource="{Binding ElementName=mainWindow, Path=DataItems}" VirtualizingStackPanel.IsVirtualizing="True">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Vertical" VerticalAlignment="Bottom"
VirtualizingStackPanel.IsVirtualizing="True" >
</VirtualizingStackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
ItemsControl 绑定到 ObservableCollection,所以我可以在运行时添加项目。一旦项目离开屏幕,它就会从 ObservableCollection 中删除。
最后要做的是实现自定义项目添加行为(平滑滑入而不是插入翻译其他行为)。我应该从 StackPanel 派生来实现这样的效果,还是只对当前添加的项目执行 DoubleAnimation?任何建议表示赞赏。