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(); } } |
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> |
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"/> |
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.