我正在尝试在 RadSlideView ItemTemplate 中实现缩放功能。我通过将 ViewportControl 与 Canvas 一起使用,然后将 RenderTransform (ScaleTransform) 应用于 Canvas 中的 StackPanel 来执行此操作。类似于在此处找到的 SDK 示例。
我遇到的问题是 ScaleTransform 似乎正在影响用于更改 SlideView/Panorama/Pivot 控件中项目的滑动手势。例如,如果 ScaleTransform 设置为 0.1,与使用 1.0 的 ScaleTransform 相比,我似乎只需要滑动 1/10 的长度即可更改项目。
我发现如果我IsHitTestVisible
在 ItemTemplate 上设置为 false,那么滑动就会像我想要的那样工作。但这不是一个解决方案,因为我有时需要能够垂直平移内容,同时仍然能够通过水平滑动来更改项目。
所以我的问题是我该如何解决这个问题?
作为参考,XAML 如下所示:
<Controls:RadSlideView Name="SlideView" ItemsSource="{Binding Pages}" IsLoopingEnabled="False" SelectionChanged="RadSlideView_SelectionChanged" CacheMode="BitmapCache" ManipulationStarted="SlideView_ManipulationStarted" ManipulationCompleted="SlideView_ManipulationCompleted" ManipulationDelta="SlideView_ManipulationDelta">
<Controls:RadSlideView.ItemTemplate>
<DataTemplate>
<ViewportControl x:Name="SlideViewViewport" ViewportChanged="SlideViewViewport_ViewportChanged" Loaded="SlideViewViewport_Loaded">
<Canvas>
<StackPanel>
<Image Source="{Binding Image}" Stretch="Fill" Width="{Binding ElementName=SlideView, Path=DataContext.PageWidth}" Height="{Binding ElementName=SlideView, Path=DataContext.PageHeight}" CacheMode="BitmapCache"/>
<StackPanel.RenderTransform>
<ScaleTransform x:Name="xform"/>
</StackPanel.RenderTransform>
</StackPanel>
</Canvas>
</ViewportControl>
</DataTemplate>
</Controls:RadSlideView.ItemTemplate>
我还查看了 Teleriks RadPanAndZoom-control 以避免实现我自己的缩放功能,但由于我有时需要并排放置两张图片并像它们是一张一样缩放它们,所以我认为我不能使用它。