Tip/Trick: Guardar XAML de objetos WPF

Una de las grandes novedades de WPF es la inclusión de XAML (Extensible Application Markup Language) para el diseño de las interfaces ¿Pero qué pasa con el proceso contrario? Que queramos guardar el XAML de unos objetos generados dinámicamente en tiempo de diseño…

Para ello en WPF tenemos un nuevo namespace que se llama System.Windows.Markup encargado del XAML y su interpretación para la creación de objetos.

Antes de nada debemos importar un par de namespaces:

using System.IO;
using System.Windows.Markup;

Primero veremos como guardar el XAML, para ello debemos crear un Stream que para guardar el archivo:

FileStream stream = new FileStream(«Archivo.xaml», FileMode.Create, FileAccess.Write, FileShare.Write);

Ahora guardas el XAML con el método Save del XamlWriter, el método tiene tres sobrecargas las dos más interesantes son:

//Devuelve el XAML como string
string xaml = XamlWriter.Save(this);
//Hace uso del Stream para guardar el XAML en el archivo
XamlWriter.Save(this, stream);

No nos debemos olvidar de cerrar el stream cuando dejemos de usarlo:

stream.Close();

Ahora creamos un nuevo Window, recomiendo que esto se haga en un otro Window ya que el efecto serán montones de ventanas abriendose (jeje), volvemos a importarlos namespaces de antes, y creamos un nuevo Stream:

FileStream stream = new FileStream(«Archivo.xaml», FileMode.Open, FileAccess.Read, FileShare.Read);

El método Load del XamlReader tiene tres sobrecargas, pero todas tienen la misma funcionalidad, devolver un Object:

object objWPF = XamlReader.Load(stream);

Y otra vez debemos cerrar el Stream.

One thought on “Tip/Trick: Guardar XAML de objetos WPF

Deja un comentario

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