Pregunta

Tengo un rectángulo en mi XAML y quiero cambiar su propiedad Canvas.Left en código detrás:

<UserControl x:Class="Second90.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300" KeyDown="txt_KeyDown">
    <Canvas>
        <Rectangle 
            Name="theObject" 
            Canvas.Top="20" 
            Canvas.Left="20" 
            Width="10" 
            Height="10" 
            Fill="Gray"/>
    </Canvas>
</UserControl>

Pero esto no funciona:

private void txt_KeyDown(object sender, KeyEventArgs e)
{
    theObject.Canvas.Left = 50;
}

¿Alguien sabe cuál es la sintaxis para hacer esto?

¿Fue útil?

Solución

Canvas.SetLeft(theObject, 50)

Otros consejos

Probar

theObject.SetValue(Canvas.LeftProperty, 50d);

Hay un grupo de métodos en DependencyObject (base de la mayoría de las clases de WPF) que permiten el acceso común a todas las propiedades de dependencia. Son

  • EstablecerValor
  • GetValue
  • ClearValue

Editar Actualización del conjunto de usar un doble literal ya que el tipo de destino es un doble.

Como estamos cambiando la propiedad del 'objeto', sería mejor utilizar el método suggedte por JaredPar:

theObject.SetValue(Canvas.LeftProperty, 50d);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top