Vanguarsoft Developers blog

Ing. Javier Leal -Desarrollador CPANAX C.A / Microsoft Student Partners – VENEZUELA

Tips: Utilizando la clase XAMLReader

Deja un comentario

Bueno mis amigos internautas ahora les traigo una clase interesante que puedes utilizar compilando tu código xaml directamente desde un texto.

Según MSDN Biblioteca:

Proporciona un motor de procesamiento XAML XAML para analizar y crear correspondientes árboles de objetos de Silverlight.

Fuente: http://msdn.microsoft.com/en-us/library/system.windows.markup.xamlreader(v=vs.95).aspx

Para dar un buen ejemplo de lo que se puede hacer con esta clase construiremos una pequeña interfaz crea un nuevo proyecto y crearemos la siguiente interfaz

<Grid x:Name="LayoutRoot" Background="White">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="35"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="35"/>
    </Grid.RowDefinitions>
    <TextBox x:Name="txtCode" Grid.Row="1" TextWrapping="Wrap" Text="&lt;Grid&gt;&lt;Rectangle Height=&quot;35&quot;  Width=&quot;30&quot; Fill=&quot;Blue&quot;&gt;&lt;/Rectangle&gt;&lt;/Grid&gt;" AcceptsReturn="True" Foreground="#FF0017FF" Background="White" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Hidden" FontFamily="Segoe UI Light" FontSize="12"/>
    <Grid x:Name="Contenedor" Grid.Column="1" Grid.Row="1">
</Grid>
    <TextBlock Grid.ColumnSpan="2" TextWrapping="Wrap" Text="Ejemplo XAML Reader Ing. Javier Leal" FontWeight="Bold" FontSize="20" FontFamily="Segoe UI Light"/>
    <Button Grid.ColumnSpan="2" Content="COMPILAR" Grid.Row="2" Click="Button_Click_1"/>
   
</Grid>

La siguiente se vera así:

XAMLreader

Le dan Doble Click al Botón Compilar para ir a su Evento Click y programar la función de XAMLReader

private void Button_Click_1(object sender, RoutedEventArgs e)
{
    try
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("<Grid xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" ");
        sb.Append("xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"   ");
        sb.Append("xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\" >");
        sb.Append(" #Codigo# ");
        sb.Append("</Grid>");
        sb.Replace("#Codigo#", txtCode.Text);
        Grid Compilado = new Grid();
        Compilado = XamlReader.Load(sb.ToString()) as Grid;
        Contenedor.Children.Add(Compilado);
    }
    catch (Exception ex)
    {

        MessageBox.Show(ex.ToString());
    }

}

Explicación del Código:

Lo que estamos haciendo en el siguiente es escribir un código base de XAML en un String este código es un Grid en este caso pero puede ser el objeto que tu quieras lo que debes tomar en cuenta es que el código base debe llevar todas las importaciones xmlns ya que para renderizar la clase XAMLReader busca estas referencias puedes utilizar las referencia que quieras incluso de PRISM para crear un Region a la cual quieras cargar una pantalla,

 

En el código lo que se hace es remplazar el #Codigo# por lo que el usuario escribe en el Textox, Obviamente este código que podemos escribir va a estar limitado a las referencias que ya tiene la planilla pero si necesitas otro lo podrías colocar en el código de los objetos que estas dibujando pero sigue limitado por que estas referencias deben existir en el proyecto.. Así que esto seria para algo muy especifico a fin de cuentas es una demostración.

el XAMLReader a través del método Load recibe como parametro el String con el codigo XAML y devuelve un objeto, este objeto puede convertirse en la objeto base que se declara en el XAML que en este caso es un Grid y se puede observar como ocurre eso en esta linea.

Grid Compilado = new Grid();
        Compilado = XamlReader.Load(sb.ToString()) as Grid;

 

Luego este grid obviamente sin errores se agrega a la colección childrend de un grid de la pantalla que se le ha dado el nombre: Contenedor

Espero que les guste y se les habrá la imaginación para utilizar esta clase en sus aplicaciones.

Resultado final:

Modifique a través del TextBlock el código XAMLM y pueden ver como me muestra lo que dibujo y escribo solo hay que conocer de código XAML

image

Descargar Código Completo: http://sdrv.ms/VjN5DO

Requerimientos: Silverlight 5

Autor: Ing. Javier J. Leal H.

Desarrollador en CPANAX C.A, Microsoft Student Partners de Venezuela Amantes de nuevas Tecnologías Desarrollador es Silverlight 5, Windows 8, Windows Phone, Influenciador y Orador en Actividades Tecnológicas Microsoft

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s