Click here to Skip to main content
12,999,628 members (65,319 online)
Rate this:
Please Sign up or sign in to vote.
See more:

I am trying to put a canvas control into a scrollviewer. The canvas control is dynamic, that means i am creating their children in c# code during runtime.
<ScrollViewer Grid.Row="1">
    <Canvas Name="cvHeats" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>

My problem is, that the scrollbars are displayed, but they are disabled. How
can i make the scrollviewer work for a canvas with dynamic content?

Thanks in advance,
Posted 16-Apr-12 4:10am
Updated 11-Aug-16 7:35am
Rate this: bad
Please Sign up or sign in to vote.

Solution 2

Try to give a size to the Canvas. Something like:

<ScrollViewer Grid.Row="1">
    <Canvas Name="cvHeats" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
            Width="1000" Height="1000" />
Rate this: bad
Please Sign up or sign in to vote.

Solution 4

You can set your controls up in xaml as follows:
<scrollviewer scrollviewer.horizontalscrollbarvisibility="Auto">
                <canvas x:name="canMain" xmlns:x="#unknown">
                    <image x:name="imgMain" />

Then subscribe to the inner controls size changed event. In my case I'm using a image but you can replace it what ever suits your needs.
imgMain.SizeChanged += ImgMain_SizeChanged;

Then in the set the width and height of your canvas to the new sizes of you image.
private void ImgMain_SizeChanged(object sender, SizeChangedEventArgs e)
            canMain.Height = e.NewSize.Height;
            canMain.Width = e.NewSize.Width;
Rate this: bad
Please Sign up or sign in to vote.

Solution 3


This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
Top Experts
Last 24hrsThis month

Advertise | Privacy | Mobile
Web02 | 2.8.170624.1 | Last Updated 11 Aug 2016
Copyright © CodeProject, 1999-2017
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100