Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Changing Position of an Element Programmatically in WPF

Tags:

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!

like image 209
azamsharp Avatar asked Jul 14 '09 02:07

azamsharp


2 Answers

Here is the answer:

Canvas.SetLeft(ellipse,GetRandomValue()); Canvas.SetTop(ellipse,GetRandomValue()); 
like image 187
azamsharp Avatar answered Sep 22 '22 06:09

azamsharp


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

like image 30
Ray Avatar answered Sep 22 '22 06:09

Ray