2009-04-15 6 views
5

Ich versuche ein Steuerelement, das ich erstellt habe, auf meinem Canvas zu platzieren. Die Idee ist, sie dynamisch im laufenden Betrieb hinzufügen zu können. Wie auf einem Knopf klicken oder am Ende eines DispatchTimer. Ich habe die folgende, aber es funktioniert nicht:Wie platzieren Sie ein Steuerelement in Silverlight dynamisch auf einer Zeichenfläche?

FirstCircleControl mc = new FirstCircleControl(); 
    Canvas.SetLeft(mc, 100); 
    Canvas.SetTop(mc, 100); 

Ich sehe keine Kontrolle erscheinen ...

Antwort

6

Sie müssen die Kontrolle an den Canvas ersten hinzuzufügen.

yourCanvas.Children.Add(mc) 
6

Das Platzieren eines Steuerelements in einer Arbeitsfläche oder einem Raster ist ein zweistufiger Prozess.

  1. die Kontrolle der Kind Sammlung Container hinzufügen
  2. die Kontrolle der Lage in den Behälter Set

Sie haben den zweiten Schritt bekommen, aber die ersten fehlen.

Für eine Leinwand

Button childButton = new Button(); 
LayoutCanvas.Children.Add(childButton); 
Canvas.SetLeft(childButton, 120); 
Canvas.SetTop(childButton, 120); 

Für ein Gitter

Button childButton = new Button(); 
LayoutGrid.Children.Add(childButton); 
Grid.SetRow(childButton, 2); 
Grid.SetColumn(childButton, 2); 
+1

Danke Brad. Ich bemerkte, dass ich auch die Breite und Höhe meines Steuerelements einstellen musste, um es sichtbar zu machen. –

1

Weitere (einfacher in einigen Fällen) Art und Weise, es zu tun ist von der UIElement Seite:

(controlItem as UIElement).SetValue(Canvas.TopProperty, topVal); 
    (controlItem as UIElement).SetValue(Canvas.LeftProperty, left);