Windows Phone 7 アプリケーションの ScrollViewer に拡大縮小された画像を表示しようとしています。アプリケーション ページで、次のようにコントロールを定義します。
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Name="ImageScroller" HorizontalAlignment="Center" VerticalAlignment="Center">
<layout:LayoutTransformer x:Name="LayoutTransformer">
<layout:LayoutTransformer.LayoutTransform>
<ScaleTransform x:Name="ImageScale"/>
</layout:LayoutTransformer.LayoutTransform>
<Image x:Name="Image" Margin="4" Source="{Binding ImageSource}" />
</layout:LayoutTransformer>
</ScrollViewer>
LayoutTransformer クラスは、Silverlight 拡張プロジェクトからのものです。
ZoomIn および ZoomOut イベントを処理するメソッドがあり、そこで次のことを行います。
private void ApplicationBarIconButton_Click_1(object sender, EventArgs e)
{
// Zoom In
ImageScale.ScaleX = ImageScale.ScaleY = ImageScale.ScaleX + 0.5;
LayoutTransformer.ApplyLayoutTransform();
ImageScroller.InvalidateMeasure();
}
ただし、ズームインがあり、画像が変更されると、ScrollView コントロールの下部と画像の右側に空の領域があります。イメージがスケーリングされたが、スケール変換前の元のイメージのサイズを使用してクリップされたかのようです。
私が間違っていることはありますか?
この問題を再現するプロジェクトも作成しました: http://dl.dropbox.com/u/2598447/ZoomTest.WP7.zip