Как заставить полосу прокрутки прокрутить холст - PullRequest
2 голосов
/ 15 августа 2010

Мне было интересно, есть ли способ заставить полосу прокрутки прокрутить холст.Я поместил canvas в scrollview и переопределил метод measureoverride.Полосы прокрутки показывают, когда я достигаю концов видимых частей холста.Однако я бы хотел, чтобы холст прокручивался, потому что теперь, несмотря на то, что полосы прокрутки показывают, холст не следует за элементом.Я надеюсь, вы понимаете меня, извините за мой плохой английский:)

Ответы [ 2 ]

2 голосов
/ 17 августа 2010

Ниже приведен пример красного круга на синем холсте, который будет иметь вертикальные и горизонтальные полосы прокрутки, если он не помещается в окне.

<Window x:Class="WpfApplication.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">

    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
        <Canvas Width="500" Height="500" Background="Yellow">
            <Ellipse 
                Stroke="Red" StrokeThickness="10" 
                Width="{Binding Path=ActualWidth, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Canvas}}}" 
                Height="{Binding Path=ActualHeight, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Canvas}}}" />
        </Canvas>
    </ScrollViewer>

</Window>
2 голосов
/ 16 августа 2010

Дай мне попробовать,

1) Вы разместили холст в средстве просмотра прокрутки.
2) Когда размер холста увеличивается, появляется средство просмотра прокрутки. [Так как вы установили горизонтальную или вертикальную видимость полосы прокрутки в автоматический режим]
3) Что вы хотите, так это когда вы достигнете конца холста [Размер холста увеличивается, поэтому появятся полосы прокрутки средства просмотра прокрутки.] Вы хотите, чтобы полоса прокрутки средства просмотра прокрутки автоматически прокручивалась, чтобы показать дополнительное пространство.

Если вышеуказанный вопрос верный. Здесь идет, ответ.

Вы должны выполнить расчет на основе ActualWidth или ActualHeight холста и установить значение для свойства ScrollToHorizontalOffset или ScrollToVerticalOffset соответственно.

...