tags:

views:

1135

answers:

5

I did not knew that this simple thing would be slightly complicated. I have a Canvas in which I am trying to add Ellipse dynamically. Here is the code:

<StackPanel>

        <Canvas Name="canvas" Background="LightBlue" Margin="5" Width="250" Height="250">

        </Canvas>

        <Button Content="Draw Images" Click="Button_Click" Width="100" Margin="10" />

    </StackPanel>

And here is the code behind:

private void Button_Click(object sender, RoutedEventArgs e)
        {
            Ellipse ellipse = new Ellipse();
            ellipse.Fill = Brushes.Red;
            ellipse.Width = 10;
            ellipse.Height = 10;

            ellipse.SetValue(Canvas.LeftProperty,100);
            ellipse.SetValue(Canvas.TopProperty,100);

            canvas.Children.Add(ellipse); 


        }

For some reason it throws the exception that 100 is not a valid value!!

UPDATE:

 Canvas.SetLeft(ellipse,GetRandomValue());
            Canvas.SetTop(ellipse,GetRandomValue());
+1  A: 

Here is the answer:

Canvas.SetLeft(ellipse,GetRandomValue());
            Canvas.SetTop(ellipse,GetRandomValue());
azamsharp
A: 

The reason "100" doesn't work is that SetValue() interprets it as an int, but Canvas.Top & .Left are doubles. Try "100.0" instead. Also SetLeft() & SetTop() work because they expect doubles.

Ray
I would only wish that the error was more informative!
azamsharp
A: 

it's greate working for me other topics are also too good

amit

Amit
A: 

Try to convert integer type to Double type using "CDbl" function

Try this:

ellipse.SetValue(Canvas.LeftProperty,Cdbl(100));

hope it work...

Bobo
A: 

The code below works...

ellipse.SetValue(Canvas.LeftProperty,100.0);

ellipse.SetValue(Canvas.TopProperty,100.0);

The values are of the double type.

Andy

AndyW360