0

RadSlideView ItemTemplate にズーム機能を実装しようとしています。これを行うには、ViewportControl を Canvas で使用し、RenderTransform (ScaleTransform) を Canvas の StackPanel に適用します。ここにある SDK サンプルに似ています。

私が抱えている問題は、ScaleTransform が、SlideView/Panorama/Pivot コントロールの項目を変更するために使用されるスワイプ ジェスチャに影響しているように見えることです。たとえば、ScaleTransform が 0.1 に設定されている場合、1.0 の ScaleTransform を使用する場合と比較して、項目を変更するために必要な長さの 1/10 をスワイプするだけでよいようです。

IsHitTestVisibleItemTemplate で 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 も調べましたが、2 つの画像を並べて配置し、1 枚のようにズームする必要がある場合があるため、使用できないと思います。

4

1 に答える 1

0

問題は、ScaleTransformation が画像をスケーリングしますが、高さと幅を変更しないことです。高さと幅がスクロールビューアをオーバーフローしている場合にのみ、コンテンツをスクロールできます

于 2013-11-27T13:53:18.303 に答える