заблокировать прокрутку на месте

У меня есть inkpresenter внутри scrollviewer для приложения Windows Phone 7. Часто, когда пользователь начинает рисовать, средство просмотра прокрутки берет на себя середину штриха, что затрудняет на самом деле рисование. Я попытался отключить ScrollBarVisibility, когда необходимо использовать inkpresenter, но затем средство просмотра прокрутки автоматически перемещается вверх. Итак, как я могу предотвратить прокрутку scrollviewer, когда используется inkpresenter, сохраняя при этом позицию прокрутки?

<ScrollViewer Name="ScrollBars" VerticalScrollBarVisibility="{Binding ScrollEnabled}" >
    <Canvas Height="2000">
        ...
        <InkPresenter Name="InkCanvas" Strokes="{Binding Strokes}" Canvas.Top="500" />
    </ Canvas >
</ScrollViewer >

Редактировать:

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

var offset = scrollViewer.VerticalOffset;
ScrollEnabled = ScrollBarVisibility.Disabled;
scrollViewer.ScrollToVerticalOffset(offset);

Опять же, он просто возвращается к вершине. Есть идеи, что не так?


person tbischel    schedule 21.04.2011    source источник
comment
Вы убедились, что значение переменной offset не равно нулю?   -  person Praetorian    schedule 22.04.2011
comment
Я проверяю смещение в отладчике, оно было ненулевым. Можно ли вызывать ScrollToVerticalOffset, когда видимость прокрутки отключена?   -  person tbischel    schedule 22.04.2011
comment
Я думал, что это может быть, но, возможно, я ошибаюсь в этом. Извините, мой ответ не сработал.   -  person Praetorian    schedule 22.04.2011
comment
Не могли бы вы попробовать позвонить Scrollviewer.UpdateLayout после звонка Scrollviewer.ScrollToVerticalOffset?   -  person Praetorian    schedule 22.04.2011
comment
да, я тоже пробовал этот маршрут... не работает. Может быть, в inkpresenter нужно обработать событие, с которым я могу справиться с прикосновением, чтобы оно не всплывало в scrollviewer?   -  person tbischel    schedule 22.04.2011


Ответы (1)


После отключения VerticalScrollBarVisibility вызовите Scrollviewer.ScrollToVerticalOffset, чтобы вручную вывести InkPresenter в поле зрения.

person Praetorian    schedule 21.04.2011