Панорамирование содержимого Canvas в ScrollViewer - PullRequest
4 голосов
/ 17 ноября 2011

Я пытаюсь реализовать панорамирование в Canvas внутри прокрутки, например:

<ScrollViewer>
    <Canvas>

        <!-- some visual elements here -->

    </Canvas>
</ScrollViewer>

Я хочу, чтобы операция щелчка и перетаскивания внутри холста приводила к перемещению содержимого холста. Я попытался обработать события MouseDown, MouseMove и MouseUp, чтобы выполнить перевод в порядке, описанном здесь , но это не сработало.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 17 ноября 2011

Вы не можете сделать это с вашей текущей настройкой. Canvas простирается за пределы своего родительского контейнера, и средство просмотра прокрутки не будет знать размер Canvas (он скажет, что ему не нужна прокрутка) и, следовательно, не сможет создавать дескрипторы.

Если вы хотите пропустить эту настройку, измените холст на сетку и используйте Вертикальная прокрутка и Горизонтальная прокрутка и соответствующие свойства набора для перемещения видимого участка сетки вокруг.

0 голосов
/ 17 ноября 2011

Попробуйте задать для холста значение «Ширина» и «Высота», задайте для него цвет фона (с прозрачным все должно быть в порядке) и посмотрите, поможет ли это получить события мыши.

...