Как потянуть полосы прокрутки на Холсте WPF

Я пытаюсь создать холст с полосами прокрутки. Кто-либо может помочь мне дать некоторое представление относительно того, как сделать это? Я уже попытался использовать сетку 1 строки и 1 столбец, но из-за определенных ограничений я хочу использовать холст.

Заранее спасибо!

12
задан Scooby 13 May 2010 в 17:35
поделиться

2 ответа

Вы можете поместить холст в средство просмотра прокрутки. Я попробовал этот быстрый тест, и он позволил мне прокручивать содержимое холста.

<ScrollViewer Height="100" Width="200">
    <Canvas Height="400" Width="400">
            //Content here
    </Canvas>
</ScrollViewer>

edit: Вот пример, в котором полосы прокрутки отображаются только при необходимости и динамически меняются при изменении размера холста.

    <Button Content="Change Canvas Size" Click="ChangeCanvasSize_Click"/>
<ScrollViewer Height="100" Width="200" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
    <Canvas x:Name="TestCanvas">
            <TextBlock Text="Test Test"/>
    </Canvas>
 </ScrollViewer>

Изменение размера холста нажатием кнопки:

    private void ChangeCanvasSize_Click(object sender, RoutedEventArgs e)
    {
        TestCanvas.Width = 600;
        TestCanvas.Height = 600;
    }

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

20
ответ дан 2 December 2019 в 07:02
поделиться

Хорошо, поработав с ним какое-то время, я нашел способ. Создайте подобный XAML

<ScrollViewer>
 <Grid x:Name="drawingGrid" SizeChanged="drawingGrid_SizeChanged">
<Canvas Name="drawingCanvas"> /<Canvas>
</Grid>
</ScrollViewer>

В функции windowLoad установите высоту / ширину холста, равную высоте / ширине сетки. Обновите холст ht / wd:

  1. при изменении размера сетки из-за mininmize / maximize.
  2. перетаскивание элемента за границы холста или создание нового элемента слишком близко к краю холста

     double dHeight = 220; 
    if (drawingCanvas.Height 

Надеюсь, это поможет. Пожалуйста, поделитесь, если у кого-нибудь есть лучшая идея или предложения по улучшению этого.

2
ответ дан 2 December 2019 в 07:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: