Obtener el template o la plantilla de un Control XAML – WPF


En algunos casos cuando estamos trabajando con XAML, queremos modificar la presentación de un control, como por ejemplo, modificar un Scrollbar, para personalizarlos.

El problema esta en que no podemos iniciar desde cero para crear el template o la plantilla del control, hay una solución muy sencilla, y es extraer el XAML por defecto que tienen los controles, luego ya podemos modificarlos a nuestro gusto.

La forma de hacerlo es:

– Arrastrar el control a la ventana

– Luego guardar el Template del control en un archivo xml

Para hacerlo, creamos un proyecto, agregamos un botón y un ScrollBar, nombramos el ScrollBar como scroll, en el Click del botón agregamos lo siguiente:

private void Button1_Click(object sender, RoutedEventArgs e)
{
 using (System.IO.FileStream aStream = new System.IO.FileStream("C:\\template.xml", System.IO.FileMode.Append))
 {
 System.Windows.Markup.XamlWriter.Save(scroll.Template, aStream);
 }
}

Sigue leyendo

Menú Acordeón deslizante – WPF


El menú que voy a mostrar es algo diferente al menú acordeón que se encuentra en el Wpf Toolkit, el menú va a tener el siguiente comportamiento:

– Se tienen varios paneles o bordes, los cuales van a tener algún contenido, todos los bordes están dentro de un StackPanel

– El StackPanel tendrá un ancho definido

– El ancho de cada borde depende del total de Controles Border que hay en el stack Panel y del tamaño del StackPanel

– La orientación del StackPanel es Horizontal, por lo tanto es un menú Horizontal, aunque puede ser cambiado a Vertical

– Los bordes van a tener un  estado inicial que es “cerrado” y no se verá todo su contenido

– Cuando el Mouse pase por encima o entre en el contenido de algún borde, este se abrirá, cambiando su ancho a un tamaño definido más grande que el tamaño que tienen cuando esta “cerrado”, los demás bordes se cerraran aún más para ocupar el espacio sobrante, en total la sumatoria del espacio del borde seleccionado abierto y los demás bordes cerrados dará el tamaño del StackPanel.

– Si el Mouse se pasa a otro borde, se cerrará el borde seleccionado anteriormente y se repetirá el mismo efecto con el borde seleccionado.

– Si el Mouse no esta seleccionando ningún borde, estos estarán cerrados, ocupando todo el tamaño del StackPanel.

En acción el Menú se verá así:

Sigue leyendo

Imprimir en WPF


En WPF podemos imprimir documentos y objetos visuales, como Canvas, Grid, Paneles, etc.

Para probar, creamos un proyecto y modificamos la pantalla, agregando lo siguiente en el xaml:


<Window x:Class="Aplicacion.Window1"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Title="Window1" Height="463" Width="689">

    <Canvas>

        <Button Canvas.Left="250" Canvas.Top="366" Height="47" Name="button1" Width="113" Click="button1_Click">Imprimir</Button>

        <Image Canvas.Left="25" Canvas.Top="36" Height="242" Name="image1" Stretch="Fill" Width="289" Source="drizzt.jpg"/>

        <TextBlock Canvas.Left="344" Canvas.Top="36" Height="242" Name="textBlock1" Width="311" Background="CornflowerBlue" Foreground="White" FontSize="16" TextWrapping="WrapWithOverflow" Text="Esto es un ejemplo de cualquier texto. Para continuar con el texto . bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla  bla bla bla  bla bla bla " />

        <Label Canvas.Left="370" Canvas.Top="4" Height="34" Name="label1" Width="114" FontSize="18">Texto:</Label>

    </Canvas>

</Window>

 

Sigue leyendo