Saltar al contenido
Menú
El blog de Kañaz
  • Inicio
  • Acerca de
  • Github
  • Youtube
  • LinkedIn
  • Twitter
El blog de Kañaz

Dependency properties (parte 2)

Publicada el 30 octubre, 201121 mayo, 2012
Twittear

Continuando con el tema de las propiedades de dependencia y partiendo de donde nos quedamos en la parte 1 de este mini serie, podemos seguir, si decidiste comenzar a partir de aquí, necesitarás el código que terminamos en el post anterior, puedes descargarlo desde aquí.

Ya que tienes los dos primeros ejercicios completados y correctos, ve a tu Control2, como en la entrada anterior creaste el único control de XAML que necesitaría ahora podrás irte al code behind y ahí crear una nueva propiedad de dependencia (recuerda utilizar el snippet “propdp”, es demasiado útil), para dejarla lista, no olvides el método de Registrar.

public string Texto
{
get { return (string)GetValue(TextoProperty); }
set { SetValue(TextoProperty, value); }
}
 
public static readonly DependencyProperty TextoProperty =
DependencyProperty.Register("Texto", typeof(string), typeof(Control2), new PropertyMetadata("Vacio", RecibeTexto));
 
private static void RecibeTexto(DependencyObject sender, DependencyPropertyChangedEventArgs a)
{
Control2 variable = sender as Control2;
 
if (variable != null)
{
variable.txtDestino.Text = a.NewValue.ToString();
}
}

public string Texto { get { return (string)GetValue(TextoProperty); } set { SetValue(TextoProperty, value); } } public static readonly DependencyProperty TextoProperty = DependencyProperty.Register("Texto", typeof(string), typeof(Control2), new PropertyMetadata("Vacio", RecibeTexto)); private static void RecibeTexto(DependencyObject sender, DependencyPropertyChangedEventArgs a) { Control2 variable = sender as Control2; if (variable != null) { variable.txtDestino.Text = a.NewValue.ToString(); } }

Listo, al igual que en el control1, de esta manera podrás enlazar los datos de texto, solo que como puedes ver, en el parámetro final, el de los metadatos, iremos directamente a una función estática, recuerda que por ser de este tipo no puedes acceder a ninguno de los elementos que estén fuera de ella y es por eso que utilizas el sender de la función para que por medio de un casteo de datos puedas utilizarlo de una manera mas adecuada y obviamente mandarle al control de texto la información ya recibida, nota que el evento de la propiedad que utilizamos es cuando esta pudo cambiar, por ende hará la inserción de datos de manera automática.

Para comprobar lo dicho anteriormente, ve a tu MainPage y ahí después de construir tu aplicación (si, debes de construirla ates de continuar) e inserta el siguiente XAML

<Border BorderBrush="Black" BorderThickness="1" Margin="8,184,8,142">
<Grid Margin="0">
<TextBlock Margin="8,8,0,0" TextWrapping="Wrap" Text="Ejemplo 3" HorizontalAlignment="Left" Height="17" VerticalAlignment="Top" Width="98"/>
<local:Control1 x:Name="ctrl1" HorizontalAlignment="Left" Margin="8,0,0,8" VerticalAlignment="Bottom"/>
<local:Control2 x:Name="ctrl2" HorizontalAlignment="Left" Margin="274,0,0,8" Width="200" Height="28" VerticalAlignment="Bottom"/>
</Grid>
 
</Border>

<Border BorderBrush="Black" BorderThickness="1" Margin="8,184,8,142"> <Grid Margin="0"> <TextBlock Margin="8,8,0,0" TextWrapping="Wrap" Text="Ejemplo 3" HorizontalAlignment="Left" Height="17" VerticalAlignment="Top" Width="98"/> <local:Control1 x:Name="ctrl1" HorizontalAlignment="Left" Margin="8,0,0,8" VerticalAlignment="Bottom"/> <local:Control2 x:Name="ctrl2" HorizontalAlignment="Left" Margin="274,0,0,8" Width="200" Height="28" VerticalAlignment="Bottom"/> </Grid> </Border>

Ya para finalizar solo hace falta que hagas un pequeño dataBinding como lo hiciste en la primera parte, en el ejemplo 1.

<local:Control2 x:Name="ctrl2" HorizontalAlignment="Left" Margin="274,0,0,8" Width="200" Texto="{Binding Texto, ElementName=ctrl1}" Height="28" VerticalAlignment="Bottom"/>

<local:Control2 x:Name="ctrl2" HorizontalAlignment="Left" Margin="274,0,0,8" Width="200" Texto="{Binding Texto, ElementName=ctrl1}" Height="28" VerticalAlignment="Bottom"/>

Y listo!!! De esta manera podrás comprender los principios básicos de como implementar una herramienta sumamente valiosa de Silverlight, WPF o Windows Phone como lo son las propiedades de dependencia, como siempre si tienes alguna duda, solo envíala vía comentario, o por cualquier red social, será un gusto poder apoyar.

Puedes descargar aquí el código de la aplicación final.

 

 

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Busca en este sitio

MI perfil de Github

Github profile

Sígueme en Twitter

Seguir a @aminespinoza
©2023 El blog de Kañaz | Funciona con SuperbThemes y WordPress