Archives

Categories


Links




Locations of visitors to this page


El maravilloso universo de la ingenería y desarrollo de software


DependencyProperty en WPF y Silverlight 2

Jun-212008

Una de las introducciones más importantes por parte de Microsoft en incrementar la experiencia del usuario proviene en la facilidad y compatibilidad de desarrollar un mismo código que trabaje para dispositivos diferentes.

Por ejemplo recordamos como anteriormente era muy diferente el desarrollo para aplicaciones web y de escritorio, en web existía el HTML mientras que en el escritorio las formas y ventanas, el cual la experiencia del usuario variaba de tecnología en tecnología, con la incursión del XAML tanto para WPF y Silverlight (WF también utiliza XAML) esta brecha se ha recortado, lo que nos permite incrementar la productividad en ambas áreas ya que solo necesitamos aprender una sintaxis en común, pero esta unión ha traído nuevas maneras de hacer las cosas, en este post nos enfocaremos a las propiedades con dependencia y ruteo de eventos.

Se introduce un nuevo tipo de propiedad llamado “Dependency property”, utilizado a través de la plataforma para habilitar estilos, ligado de datos, animación, extensibilidad, etc.

Este tipo de propiedades son las que permiten aislar la capa de código compilado por .NET y el archivo Xaml, de tal forma que nosotros podamos editar un archivo XAML ya sea en un Notepad o en herramientas como Microsoft Expression Blend, y se pueda cumplir el objetivo que busca Microsoft en separar el trabajo de un diseñador y un desarrollador y este sea integrado de la manera más sencilla. ¿Y cómo se integra todo eso?, es gracias a objetos y propiedades con dependencia lo que permite tener integrado un archivo XAML y código .NET

En este ejemplo podemos ver como generamos una propiedad dependiente en código .NET

        public string Text
        {
            get { return (string)GetValue(TextProperty); }
            set { SetValue(TextProperty, value); }
        }

        // Using a DependencyProperty as the backing store for Text.  
        //This enables animation, styling, binding, etc...
        public static readonly DependencyProperty TextProperty =
            DependencyProperty.Register("Text", typeof(string), 
            typeof(CustomButton), new PropertyMetadata(TextChangedCallback));

        private static void TextChangedCallback(DependencyObject obj,
                        DependencyPropertyChangedEventArgs args)
        {
        }

Y de la misma manera en nuestro XAML podemos invocar estar propiedades.

 

<UserControl
    xmlns="http://schemas.microsoft.com/client/2007"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="SampleApp.Page"
    Width="640" Height="480" xmlns:SampleApp="clr-namespace:SampleApp">

    <Grid x:Name="LayoutRoot">
        <SampleApp:CustomButton Margin="268,189,297,226" Text="Selección" 
                                FontSize="10" OpacityMask="#FFAE0D0D" 
                                ColorButton="#FF621476"/>
    </Grid>
</UserControl>

Y también en Microsoft Expression es posible utilizar esta propiedad.

image

Una propiedad dependiente genera un evento en el momento que su valor es modificado, lo que permite asignar la información recibida a otros controles dentro de nuestro mismo control o en generar otras acciones.

        private static void TextChangedCallback(DependencyObject obj,
                        DependencyPropertyChangedEventArgs args)
        {
            //Asigna el texto
            CustomButton button = obj as CustomButton;
            if (button != null)
            {
                button.text.Text = args.NewValue as string;
            }
        }

Estos ejemplos aplican a WPF y Silverlight 2.

 
Posted by Efren Esteban Cruz Anguiano | 0 Comments | Bookmark with:        
Tags: Design, Develop, Silverlight

Links to this Post

Comments

Name:
URL:
Email:
Comments:

CAPTCHA Image Validation