Silverlight - проблема изменения размера полос прокрутки при масштабировании содержимого полосы прокрутки - PullRequest
1 голос
/ 04 сентября 2010

У меня странная проблема с функцией увеличения и панорамирования Silverlight.У меня есть прокрутка, внутри него и внутри моего основного содержимого (некоторые сетки, текстовые поля и т. Д.). Мой XAML выглядит примерно так:

XAML:

 <Grid x:Name="Root" Background="Black">
    <ScrollViewer x:Name="Scroller" HorizontalScrollBarVisibility="Visible">
        <Border x:Name="Sizer">
            <Grid x:Name="LayoutRoot" ShowGridLines="True" RenderTransformOrigin="0.5,0.5">                   
               ... my content which is been scaled ...
            </Grid>
        </Border>
    </ScrollViewer>
</Grid>

Масштабирование работает отлично.Но я попытался реализовать функцию панорамирования при увеличении, чтобы я мог просматривать увеличенный контент.Моя часть масштабирования выглядит следующим образом:

protected override void OnMouseWheel(MouseWheelEventArgs e)
    {
        base.OnMouseWheel(e);           

        if (e.Delta > 0)
        {
            scale.ScaleX += 0.2;
            scale.ScaleY += 0.2;                
        }
        else if(e.Delta < 0 && (scale.ScaleX > 1 && scale.ScaleY > 1))
        {
            scale.ScaleX -= 0.2;
            scale.ScaleY -= 0.2;                
        }

        Sizer.Width = Sizer.Width * scale.ScaleX;
        Sizer.Height = Sizer.Height * scale.ScaleY;

В приведенном выше коде в двух последних строках я также изменяю ширину и высоту Sizer (это граница в ScrollViewer), потому что я не хочу автоматически изменять размерграницы, так что ScrollViewer может изменить размер самого себя.Но есть проблема.Полосы прокрутки не перехватывают весь контент после масштабирования. Размеры сетки, которая состоит из масштабированного контента, и ScrollViewer одинаковы во время отладки:

Sizer_H : 1153,20007324219, LayoutRoot_H : 1153,20004582405, Sizer_W : 2271,60009765625, LayoutRoot_W : 2271,60009026527
Sizer_H : 1614,20007324219, LayoutRoot_H : 1614,20010995865, Sizer_W : 3180,80029296875, LayoutRoot_W : 3180,8002166748
Sizer_H : 2582,40014648438, LayoutRoot_H : 2582,40023088455, Sizer_W : 5089,6005859375, LayoutRoot_W : 5089,6004550457

Я пытаюсь выяснить, где я делаюнеправильно .. но без удачи ..

Спасибо!

...