2009-04-15 4 views
5

Estoy tratando de colocar un control que he creado en mi Canvas. La idea es poder agregarlos dinámicamente sobre la marcha. Como en un botón, haga clic o al final de DispatchTimer. Tengo lo siguiente, pero no funciona:¿Cómo se coloca dinámicamente un control en un lienzo en Silverlight?

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

no veo ningún control aparecerá ...

Respuesta

6

es necesario agregar el control a la primera Canvas.

yourCanvas.Children.Add(mc) 
6

Colocar un control dentro de un lienzo o rejilla es un proceso de dos pasos.

  1. agregar el control a la colección de elementos secundarios del contenedor
  2. Establecer la ubicación del control dentro del contenedor

Tienes el segundo paso, pero faltan el primero.

Para un lienzo

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

Para una cuadrícula

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

Gracias Brad. Me di cuenta de que también necesitaba establecer el ancho y la altura de mi control para hacerlo visible. –

1

Otro (más fácil en algunos casos) camino para hacerlo es desde el lado UIElement:

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