m.bleimuth Ответов: 4

WPF Canvas ScrollViewer


Привет,

Я пытаюсь поместить элемент управления canvas в scrollviewer. Элемент управления canvas является динамическим, что означает, что я создаю их дочерние элементы в коде c# во время выполнения.
<ScrollViewer Grid.Row="1">
    <Canvas Name="cvHeats" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
</ScrollViewer>

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

Заранее спасибо,
Ману

4 Ответов

Рейтинг:
2
Рейтинг:
2

Tushar15

Consel.write("HEloo");


Рейтинг:
1

ryanba29

Вы можете настроить свои элементы управления в xaml следующим образом:

<scrollviewer scrollviewer.horizontalscrollbarvisibility="Auto">
                 ScrollViewer.VerticalScrollBarVisibility="Auto">
                <canvas x:name="canMain" xmlns:x="#unknown">
                    <image x:name="imgMain" />
                </canvas>
            </scrollviewer>

Затем подпишитесь на событие изменения размера внутренних элементов управления. В моем случае я использую изображение, но вы можете заменить его тем, что когда-либо соответствует вашим потребностям.
imgMain.SizeChanged += ImgMain_SizeChanged;

Затем в настройках установите ширину и высоту вашего холста на новые размеры вашего изображения.
private void ImgMain_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            canMain.Height = e.NewSize.Height;
            canMain.Width = e.NewSize.Width;
        }


Рейтинг:
0

Shmuel Zang

Попробуйте дать размер Canvas Что-то вроде:


<ScrollViewer Grid.Row="1">
    <Canvas Name="cvHeats" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"

            Width="1000" Height="1000" />
</ScrollViewer>