Я пытаюсь получить масштабированное изображение в ScrollViewer в моем приложении Windows Phone 7. На странице приложения я определяю элементы управления следующим образом:
<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();
}
Однако, когда у меня есть Zoom-In и изображение изменено, элемент управления ScrollView имеет пустую область внизу и справа от изображения. Почти как если бы Изображение было масштабировано, но обрезано с использованием размера исходного изображения до преобразования масштаба.
Есть идеи, что я делаю не так?
Я также создал проект, который воспроизводит эту проблему: http://dl.dropbox.com/u/2598447/ZoomTest.WP7.zip