¿Cómo puedo acceder a una propiedad adjunta en el código detrás?
-
23-08-2019 - |
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?
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