manual 07 - windows presentation foundation parte 1

445
Manual de Windows Presentation Foundation MCT: Luis Dueñas Pag 1 de 445 INDICE GENERAL 1. Introducción a WPF 1.1. Introducción a Windows Presentation Foundation 1.2. Información General sobre Windows Presentation Foundation 1.3. Lo Nuevo en Windows Presentation Foundation Versión 3.5 2. Desarrollo de Aplicaciones 2.1. Información General sobre el Desarrollo de Aplicaciones 2.2. Administración de Aplicaciones 2.2.1. Información General sobre la Administración de Aplicaciones 2.2.2. Archivos c Windows Presentation Foundation 2.2.3. URIs de Paquete en Windows Presentation Foundation 2.2.4. Temas Cómo del Modelo de Aplicaciones 2.2.4.1. Cómo: Obtener y Establecer Propiedades en el Ambito de Aplicación 2.2.4.2. Cómo: Obtener y Establecer Recursos en el Ambito de Aplicación 2.2.4.3. Cómo: Obtener y Establecer el Código de Salida de Aplicaciones 2.2.4.4. Cómo: Obtener los Argumentos de Línea de Comandos 2.2.4.5. Cómo: Obtener el Objeto de Aplicación Actual 2.2.4.6. Cómo: Conservar y Restaurar Propiedades en el Ambito de Aplicación a través de Sesiones de Aplicación 2.2.4.7. Cómo: Cerrar una Aplicación 2.2.4.8. Cómo: Iniciar una Aplicación 2.2.4.9. Cómo: Usar un Diccionario de Recursos en el Ambito de Aplicación 2.3. Ventanas en Aplicaciones de Windows Presentation Foundation 2.3.1. Información General sobre Ventanas de WPF 2.3.2. Información General sobre Cuadros de Diálogo 2.3.3. Temas Cómo de la Administración de Ventanas 2.3.3.1. Cómo: Cambiar Automáticamente el Tamaño de una Ventana para que se Ajuste a su Contenido 2.3.3.2. Cómo: Obtener Todas las Ventanas de una Aplicación 2.3.3.3. Cómo: Obtener y Establecer la Ventana Principal de una Aplicación 2.3.3.4. Cómo: Abrir un Cuadro de Diálogo 2.3.3.5. Cómo: Abrir un Cuadro de Mensaje 2.3.3.6. Cómo: Abrir una Ventana 2.3.3.7. Cómo: Devolver el Resultado de un Cuadro de Diálogo 2.4. Navegación en Aplicaciones de Windows Presentation Foundation 2.4.1. Información General sobre Navegación 2.4.2. Información General sobre la Navegación Estructurada 2.4.3. Información General sobre Topologías de Navegación 2.4.4. Temas Cómo de Navegación 2.4.4.1. Cómo: Llamar a una Función de Página 2.4.4.2. Cómo: Determinar si una Página está Hospedada en un Explorador 2.4.4.3. Cómo: Obtener el Valor Devuelto por una Función de Página 2.4.4.4. Cómo: Navegar hacia Delante por el Historial de Navegación 2.4.4.5. Cómo: Navegar hacia Atrás por el Historial de Navegación 2.4.4.6. Cómo: Navegar hasta una Página 2.4.4.7. Cómo: Actualizar una Página 2.4.4.8. Cómo: Devolver Resultados de una Función de Página 2.4.4.9. Cómo: Establecer el Alto de una Ventana desde una Página 2.4.4.10. Cómo: Establecer el Ancho de una Ventana desde una Página 2.4.4.11. Cómo: Establecer el Título de una Ventana desde una Página 2.4.4.12. Cómo: Detener la Carga de una Página 2.4.4.13. Cómo: Usar Mailto: para Enviar Correo desde una Página 2.5. Extensibilidad de Aplicaciones 2.5.1. Información General sobre Complementos de WPF 2.5.2. Temas Cómo de Complementos de WPF 2.5.2.1. Cómo: Crear un Complemento que Devuelva una Interfaz de Usuario 2.5.2.2. Cómo: Crear un Complemento que sea una Interfaz de Usuario 2.6. Hospedar Aplicaciones de Windows Presentation Foundation 2.6.1. Información General sobre Aplicaciones de Explorador XAML de WPF

Upload: yvan-carranza

Post on 07-Nov-2015

251 views

Category:

Documents


13 download

DESCRIPTION

Manual 07 - Windows Presentation Foundation Parte 1

TRANSCRIPT

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 1 de 445

    INDICE GENERAL 1. Introduccin a WPF

    1.1. Introduccin a Windows Presentation Foundation 1.2. Informacin General sobre Windows Presentation Foundation 1.3. Lo Nuevo en Windows Presentation Foundation Versin 3.5

    2. Desarrollo de Aplicaciones 2.1. Informacin General sobre el Desarrollo de Aplicaciones 2.2. Administracin de Aplicaciones 2.2.1. Informacin General sobre la Administracin de Aplicaciones 2.2.2. Archivos c Windows Presentation Foundation 2.2.3. URIs de Paquete en Windows Presentation Foundation 2.2.4. Temas Cmo del Modelo de Aplicaciones 2.2.4.1. Cmo: Obtener y Establecer Propiedades en el Ambito de Aplicacin 2.2.4.2. Cmo: Obtener y Establecer Recursos en el Ambito de Aplicacin 2.2.4.3. Cmo: Obtener y Establecer el Cdigo de Salida de Aplicaciones 2.2.4.4. Cmo: Obtener los Argumentos de Lnea de Comandos 2.2.4.5. Cmo: Obtener el Objeto de Aplicacin Actual 2.2.4.6. Cmo: Conservar y Restaurar Propiedades en el Ambito de

    Aplicacin a travs de Sesiones de Aplicacin 2.2.4.7. Cmo: Cerrar una Aplicacin 2.2.4.8. Cmo: Iniciar una Aplicacin 2.2.4.9. Cmo: Usar un Diccionario de Recursos en el Ambito de Aplicacin

    2.3. Ventanas en Aplicaciones de Windows Presentation Foundation 2.3.1. Informacin General sobre Ventanas de WPF 2.3.2. Informacin General sobre Cuadros de Dilogo 2.3.3. Temas Cmo de la Administracin de Ventanas 2.3.3.1. Cmo: Cambiar Automticamente el Tamao de una Ventana para

    que se Ajuste a su Contenido 2.3.3.2. Cmo: Obtener Todas las Ventanas de una Aplicacin 2.3.3.3. Cmo: Obtener y Establecer la Ventana Principal de una Aplicacin 2.3.3.4. Cmo: Abrir un Cuadro de Dilogo 2.3.3.5. Cmo: Abrir un Cuadro de Mensaje 2.3.3.6. Cmo: Abrir una Ventana 2.3.3.7. Cmo: Devolver el Resultado de un Cuadro de Dilogo

    2.4. Navegacin en Aplicaciones de Windows Presentation Foundation 2.4.1. Informacin General sobre Navegacin 2.4.2. Informacin General sobre la Navegacin Estructurada 2.4.3. Informacin General sobre Topologas de Navegacin 2.4.4. Temas Cmo de Navegacin 2.4.4.1. Cmo: Llamar a una Funcin de Pgina 2.4.4.2. Cmo: Determinar si una Pgina est Hospedada en un Explorador 2.4.4.3. Cmo: Obtener el Valor Devuelto por una Funcin de Pgina 2.4.4.4. Cmo: Navegar hacia Delante por el Historial de Navegacin 2.4.4.5. Cmo: Navegar hacia Atrs por el Historial de Navegacin 2.4.4.6. Cmo: Navegar hasta una Pgina 2.4.4.7. Cmo: Actualizar una Pgina 2.4.4.8. Cmo: Devolver Resultados de una Funcin de Pgina 2.4.4.9. Cmo: Establecer el Alto de una Ventana desde una Pgina 2.4.4.10. Cmo: Establecer el Ancho de una Ventana desde una Pgina 2.4.4.11. Cmo: Establecer el Ttulo de una Ventana desde una Pgina 2.4.4.12. Cmo: Detener la Carga de una Pgina 2.4.4.13. Cmo: Usar Mailto: para Enviar Correo desde una Pgina 2.5. Extensibilidad de Aplicaciones 2.5.1. Informacin General sobre Complementos de WPF 2.5.2. Temas Cmo de Complementos de WPF 2.5.2.1. Cmo: Crear un Complemento que Devuelva una Interfaz de Usuario 2.5.2.2. Cmo: Crear un Complemento que sea una Interfaz de Usuario 2.6. Hospedar Aplicaciones de Windows Presentation Foundation 2.6.1. Informacin General sobre Aplicaciones de Explorador XAML de WPF

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 2 de 445

    2.6.2. Informacin General sobre Aplicaciones Hospedadas en Windows Media Center para WPF 2.6.3. Host de Windows Presentation Foundation (PresentationHost.exe) 2.6.4. API No Administrada de WpfHostSupport 2.6.4.1. IEnumRAWINPUTDEVICE 2.6.4.2. IWpfHostSupport

    2.7. Generar e Implementar Aplicaciones de WPF 2.7.1. Generar una Aplicacin de WPF 2.7.2. Implementar una Aplicacin de WPF 2.7.3. Temas Cmo de Generar e Implementar 2.7.3.1. Cmo: Crear un Archivo de Proyecto de Ejemplo para una Aplicacin

    Independiente de WPF 2.7.3.2. Cmo: Crear un Archivo de Proyecto de Ejemplo para una Aplicacin de Navegacin Independiente de WPF 2.7.3.3. Cmo: Crear un Archivo de Proyecto de Ejemplo para una Aplicacin de Explorador XAML de WPF 2.7.3.4. Cmo: Crear un Archivo de Proyecto de Ejemplo para una Biblioteca de Controles Personalizados de WPF 2.7.3.5. Cmo: Crear un Archivo de Proyecto de Ejemplo para una Aplicacin Independiente de WPF que slo contiene Cdigo 2.7.3.6. Cmo: Configurar IIS 5.0 e IIS 6.0 para Implementar Aplicaciones de WPF 2.7.3.7. Configurar Visual Studio 2005 para Depurar una Aplicacin de Explorador XAML 2.7.3.8. Configurar Visual Studio para Depurar una Aplicacin de Explorador XAML y Llamar a un Servicio Web 2.7.3.9. Cmo: Determinar la Versin Instalada de Windows Presentation Foundation 2.7.3.10. Cmo: Detectar si .NET Framework 3.0 est Instalado 2.7.3.11. Cmo: Detectar si .NET Framework 3.5 est Instalado 2.7.3.12. Cmo: Detectar si est Instalado el Complemento XBAP para Firefox

    2.8. Rendimiento 2.8.1. Niveles de Representacin de Grficos 2.8.2. Optimizar WPF: Rendimiento de Aplicaciones 2.8.2.1. Planear para Mejorar el Rendimiento de Aplicaciones 2.8.2.2. Aprovechar el Hardware 2.8.2.3. Presentacin y Diseo 2.8.2.4. Imgenes y Grficos 2D 2.8.2.5. Comportamiento de Objetos 2.8.2.6. Recursos de Aplicacin 2.8.2.7. Texto 2.8.2.8. Enlace de Datos 2.8.2.9. Otras Recomendaciones 2.8.2.10. Herramientas y Recursos de Rendimiento de WPF 3. Elementos Fundamentales de WPF 3.1. Arquitectura de WPF 3.2. XAML 3.2.1. Informacin General sobre XAML 3.2.2. Terminologa de la Sintaxis de XAML 3.2.3. Cdigo Subyacente y XAML 3.2.4. XAML y Clases Personalizadas 3.2.5. Extensiones de Marcado y XAML 3.2.6. Espacios de Nombres y Asignacin de Espacios de Nombres de XAML 3.2.7. Ambitos de Nombres de WPF 3.2.8. Estilos y Plantillas Insertados 3.2.9. Procesamiento de Espacios en Blanco en XAML 3.2.10. Clases TypeConverter y XAML 3.2.11. Entidades de Caracteres XML y XAML 3.2.12. Caractersticas de lenguaje (x:) de espacios de nombres XAML

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 3 de 445

    3.2.12.1. Extensin de Marcado x:Array 3.2.12.2. Atributo x:Class 3.2.12.3. Atributo x:ClassModifier 3.2.12.4. Elemento de Directiva x:Code de XAML 3.2.12.5. Atributo x:FieldModifier 3.2.12.6. Atributo x:Key 3.2.12.7. Atributo x:Name 3.2.12.8. Extensin de Marcado x:Null 3.2.12.9. Atributo x:Shared 3.2.12.10. Extensiones de Marcado x:Static 3.2.12.11. Atributo x:Subclase 3.2.12.12. Extensin de Marcado x:Type 3.2.12.13. Atributo x:TypeArguments 3.2.12.14. Atributo x:Uid 3.2.12.15. Elemento de Directiva x:XData de XAML 3.2.12.16. Gramtica de XamlName 3.2.12.17. Secuencia de Escape / Extensin de Marcado {} 3.2.12.18. Control de xml:lang en XAML 3.2.12.19. Control de xml:space en XAML 3.2.13. Extensiones de XAML de Espacio de Nombres de WPF 3.2.13.1. Enlazar Extensin de Marcado 3.2.13.2. Extensin de Marcado ColorConvertedBitmap 3.2.13.3. Extensin de Marcado ComponentResourceKey 3.2.13.4. Extensin de Marcado DynamicResource 3.2.13.5. Extensin de Marcado RelativeSource 3.2.13.6. Extensin de Marcado StaticResource 3.2.13.7. Extensin de Marcado TemplateBinding 3.2.13.8. Extensin de Marcado ThemeDictionary 3.2.13.9. Sintaxis de PropertyPath de XAML 3.2.13.10. Atributo PresentationOptions:Freeze 3.2.14. Caractersticas del Lenguaje de Compatibilidad de Marcado (mc:) 3.2.14.1. Atributo mc:Ignorable 3.2.14.2. Atributo mc:ProcessContent 3.3. Elementos Base 3.3.1. Informacin General sobre Elementos Base 3.3.2. Informacin General sobre Objetos Freezable 3.3.3. Informacin General sobre Alineacin, Mrgenes y Relleno 3.3.4. Temas Cmo sobre Elementos Base 3.3.4.1. Cmo: Hacer que un Elemento UIElement sea Transparente o

    Semitransparente 3.3.4.2. Cmo: Animar el Tamao de un Elemento FrameworkElement 3.3.4.3. Cmo: Determinar si un Elemento Freezable est Inmovilizado 3.3.4.4. Cmo: Controlar un Evento Cargado 3.3.4.5. Cmo: Definir Mrgenes de Elementos y Controles 3.3.4.6. Cmo: Hacer que un Elemento Freezable sea de Slo Lectura 3.3.4.7. Cmo: Obtener una Copia Modificable de un Elemento Freezable de Slo Lectura 3.3.4.8. Cmo: Voltear un Control UIElement Horizontal o Verticalmente 3.3.4.9. Cmo: Utilizar un Objeto ThicknessConverter 3.3.4.10. Cmo: Usar un Objeto LengthConverter 3.3.4.11. Cmo: Controlar el Evento ContextMenuOpening

    3.4. Arbol de Elementos y Serializacin 3.4.1. Arboles en WPF 3.4.2. Limitaciones en la Serializacin de XamlWriter.Save 3.4.3. Inicializacin de Elementos de Objeto No Incluidos en un Arbol de Elementos 3.4.4. Temas Cmo sobre el Arbol de Elementos y la Serializacin 3.4.4.1. Cmo: Buscar un Elemento por su Nombre 3.4.4.2. Cmo: Invalidar el Arbol Lgico 3.5. Propiedades 3.5.1. Informacin General sobre las Propiedades de Dependencia

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 4 de 445

    3.5.2. Informacin General sobre Propiedades Asociadas 3.5.3. Devoluciones de Llamada y Validacin de las Propiedades de Dependencia 3.5.4. Propiedades de Dependencia Personalizadas 3.5.5. Metadatos de las Propiedades de Dependencia 3.5.6. Metadatos de las Propiedades de Marco de Trabajo 3.5.7. Prioridad de los Valores de Propiedades de Dependencia 3.5.8. Propiedades de Dependencia de Slo Lectura 3.5.9. Herencia de Valores de Propiedad 3.5.10. Seguridad de las Propiedades de Dependencia 3.5.11. Modelos de Constructores Seguros para Objetos DependencyObject 3.5.12. Propiedades de Dependencia de Tipo de Coleccin 3.5.13. Carga de XAML y Propiedades de Dependencia 3.5.14. Temas Cmo sobre Propiedades 3.5.14.1. Cmo: Implementar una Propiedad de Dependencia 3.5.14.2. Cmo: Restaurar el Valor Predeterminado de una Propiedad de

    Dependencia 3.5.14.3. Cmo: Agregar un Tipo de Propietario para una Propiedad de Dependencia 3.5.14.4. Cmo: Registrar una Propiedad Asociada 3.5.14.5. Cmo: Invalidar Metadatos en una Propiedad de Dependencia

    3.6. Eventos 3.6.1. Informacin General sobre Eventos Enrutados 3.6.2. Informacin General sobre Eventos Asociados 3.6.3. Eventos de Duracin de Objetos 3.6.4. Marcar Eventos Enrutados como Controlados y Control de Clases 3.6.5. Eventos de Vista Previa 3.6.6. Eventos de Cambio de Propiedades 3.6.7. Control de Eventos en Visual Basic y WPF 3.6.8. Modelos WeakEvent 3.6.9. Temas Cmo sobre Eventos 3.6.9.1. Cmo: Agregar un Controlador de Eventos mediante Cdigo 3.6.9.2. Cmo: Controlar un Evento Enrutado 3.6.9.3. Cmo: Crear un Evento Enrutado Personalizado 3.6.9.4. Cmo: Buscar el Elemento de Origen en un Controlador de Eventos 3.6.9.5. Cmo: Agregar Control de Clases a un Evento Enrutado 3.7. Acciones del Usuario y Comandos 3.7.1. Informacin General sobre Acciones del Usuario 3.7.2. Informacin General sobre Comandos 3.7.3. Informacin General sobre el Foco 3.7.4. Aplicar Estilo a los Controles al Recibir el Foco y FocusVisualStyle 3.7.5. Temas Cmo sobre Acciones del Usuario y Comandos 3.7.5.1. Cmo: Habilitar un Comando 3.7.5.2. Cmo: Cambiar el Tipo de Cursor 3.7.5.3. Cmo: Detectar el Estado de un Botn del Mouse 3.7.5.4. Cmo: Cambiar el Color de un Elemento mediante Eventos de Foco 3.7.5.5. Cmo: Aplicar FocusVisualStyle a un Control 3.7.5.6. Cmo: Detectar cuando se Presiona la Tecla Enter 3.7.5.7. Cmo: Crear un Efecto de Activacin mediante Eventos 3.7.5.8. Cmo: Crear un Objeto que Siga el Puntero del Mouse 3.7.5.9. Cmo: Agregar un Comando a un Elemento de Men 3.7.5.10. Cmo: Crear un Comando RoutedCommand 3.7.5.11. Cmo: Implementar ICommandSource 3.7.5.12. Cmo: Enlazar un Comando a un Control sin la Compatibilidad de

    Comandos 3.7.5.13. Cmo: Enlazar un Comando a un Control con la Compatibilidad de Comandos

    3.8. Recursos WPF 3.8.1. Informacin General sobre Recursos 3.8.2. Recursos y Cdigo 3.8.3. Diccionarios de Recursos Combinados

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 5 de 445

    3.8.4. Temas Cmo de Recursos 3.8.4.1. Cmo: Definir y Hacer Referencia a un Recurso 3.8.4.2. Cmo: Usar Recursos de Aplicaciones 3.8.4.3. Cmo: Utilizar SystemFonts 3.8.4.4. Cmo: Usar Claves de Fuentes del Sistema 3.8.4.5. Cmo: Utilizar SystemParameters 3.8.4.6. Cmo: Utilizar Claves de Parmetros del Sistema 3.9. Estilos y Plantillas: Conceptual 3.9.1. Aplicar Estilos y Plantillas 3.9.2. Cmo: Buscar Elementos Generados por un Objeto ControlTemplate 3.10. Sistema de Diseo 3.11. Ajuste de Pxeles en Aplicaciones de WPF 3.12. Modelo de Subprocesos

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 6 de 445

    Windows Presentation Foundation

    Windows Presentation Foundation (WPF) proporciona a los programadores un modelo de programacin

    unificado con el que generar experiencias de cliente inteligentes de Windows, en las que se incorpora la interfaz

    de usuario, multimedia y documentos.

    1. Introduccin a WPF

    Este portal proporciona vnculos a informacin destinada a programadores que son nuevos en Windows

    Presentation Foundation (WPF).

    La plataforma de desarrollo WPF se ha generado sobre un sistema de programacin bsico, que se extiende

    para admitir un amplio conjunto de caractersticas de desarrollo de aplicaciones que incluyen el propio modelo

    de aplicacin, recursos, controles, grficos, diseo, enlace de datos, documentos y seguridad.

    1.1. Introduccin a Windows Presentation Foundation

    Windows Presentation Foundation (WPF) es un sistema de presentacin de la prxima generacin, para crear

    aplicaciones cliente de Windows que proporcionen una experiencia impactante para el usuario desde el punto de

    vista visual. Con WPF, puede crear una amplia gama de aplicaciones independientes y hospedadas en

    explorador. Algunos ejemplos de ello son Yahoo! Messenger y New York Times Reader, as como la aplicacin

    de ejemplo para atencin sanitaria, Contoso Healthcare Sample Application que se muestra en la ilustracin

    siguiente.

    El ncleo de WPF es un motor de representacin independiente de la resolucin y basado en vectores

    construido para aprovechar al mximo el hardware de grficos moderno. WPF ampla el ncleo con un completo

    conjunto de caractersticas de programacin de aplicaciones, entre las que se incluyen Lenguaje de marcado de

    aplicaciones extensible (XAML), controles, enlace de datos, diseo, grficos 2D y 3D, animacin, estilos,

    plantillas, documentos, multimedia, texto y tipografa. WPF se incluye en Microsoft .NET Framework, lo que

    permite crear aplicaciones que incorporen otros elementos de la biblioteca de clases de .NET Framework.

    Esta introduccin est dirigida a personas que no conocen an WPF, y en ella se abordan sus conceptos y

    capacidades principales. Los programadores de WPF experimentados que deseen revisar este marco de trabajo

    tambin la encontrarn de utilidad.

    Programar con WPF

    WPF constituye un subconjunto de tipos de .NET Framework, en su mayora ubicados en el espacio de nombres

    de System.Windows. Si ha creado previamente aplicaciones con .NET Framework mediante tecnologas

    administradas como ASP.NET y formularios Windows Forms, los conceptos fundamentales de la programacin

    en WPF deben resultarle familiares; crear instancias de clases, definir propiedades, llamar a mtodos y

    controlar eventos con el lenguaje de programacin de .NET Framework que prefiera, como C# o Visual Basic.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 7 de 445

    Para admitir algunas de las funciones de WPF ms eficaces y simplificar la experiencia de programacin, WPF

    incluye construcciones de programacin adicionales que mejoran las propiedades y los eventos: las propiedades

    de dependencia y los eventos enrutados.

    Cdigo de lenguaje marcado y cdigo subyacente

    WPF proporciona mejoras de programacin adicionales para el desarrollo de aplicaciones cliente de Windows.

    Una mejora evidente es la capacidad para programar una aplicacin mediante cdigo de lenguaje marcado y

    subyacente, una experiencia con la que resultar familiar a los programadores de ASP.NET. En general, se

    utiliza el lenguaje marcado Lenguaje de marcado de aplicaciones extensible (XAML) para implementar la

    apariencia de una aplicacin, y los lenguajes de programacin administrados (subyacentes) para implementar

    su comportamiento. Esta separacin entre la apariencia y el comportamiento aporta las ventajas siguientes:

    Se reducen los costos de programacin y mantenimiento, al no estar el marcado especfico de la

    apariencia estrechamente relacionado con el cdigo especfico del comportamiento.

    La programacin es ms eficaz porque los diseadores pueden implementar la apariencia de una

    aplicacin al mismo tiempo que los programadores implementan su comportamiento.

    Se pueden utilizar varias herramientas de diseo para implementar y compartir el lenguaje marcado

    XAML, a fin de responder a los requisitos de los colaboradores de programacin de aplicaciones;

    Microsoft Expression Blend proporciona una experiencia apropiada para los diseadores, mientras que

    Visual Studio 2005 est dirigido a los programadores.

    La globalizacin y localizacin de las aplicaciones WPF se ha simplificado en gran medida.

    A continuacin, se muestra una introduccin breve al cdigo de lenguaje marcado y subyacente de WPF.

    Marcado

    XAML es un lenguaje de marcado basado en XML que se utiliza para implementar la apariencia de una

    aplicacin mediante declaracin. Se suele utilizar para crear ventanas, cuadros de dilogo, pginas y controles

    de usuario, as como para rellenarlos con controles, formas y grficos.

    En el ejemplo siguiente se utiliza XAML para implementar la apariencia de una ventana que contiene un solo

    botn.

    Click Me!

    En concreto, este cdigo XAML define una ventana y un botn mediante los elementos Window y Button,

    respectivamente. Cada elemento se configura con atributos, como el atributo Title del elemento Window, para

    especificar el texto de la barra de ttulo de la ventana. En tiempo de ejecucin, WPF convierte los elementos y

    los atributos definidos en el marcado en instancias de clases de WPF. Por ejemplo, el elemento Window se

    convierte en una instancia de la clase Window cuya propiedad Title es el valor del atributo Title.

    En la ilustracin siguiente se muestra la interfaz de usuario (UI) definida mediante el cdigo XAML del ejemplo

    anterior.

    Puesto que XAML se basa en XML, la interfaz de usuario que se crea con este lenguaje se ensambla en una

    jerarqua de elementos anidados que se denomina rbol de elementos. El rbol de elementos proporciona una

    manera lgica e intuitiva de crear y administrar las UIs.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 8 de 445

    Cdigo subyacente

    El comportamiento principal de una aplicacin es implementar la funcionalidad que responde a las interacciones

    con el usuario, lo que incluye controlar los eventos (por ejemplo, hacer clic en un men, una barra de

    herramientas o un botn) y llamar, en respuesta, a la lgica empresarial y de acceso a los datos. En WPF, este

    comportamiento se suele implementar en cdigo asociado al marcado. Este tipo de cdigo se denomina

    subyacente. En el ejemplo siguiente se muestran el cdigo subyacente y el marcado actualizado del ejemplo

    anterior.

    Click Me! Namespace SDKSample Partial Public Class AWindow Inherits System.Windows.Window Public Sub New() ' InitializeComponent call is required to merge the UI ' that is defined in markup with this class, including ' setting properties and registering event handlers InitializeComponent() End Sub Sub button_Click(ByVal sender As Object, ByVal e As RoutedEventArgs) ' Show message box when button is clicked MessageBox.Show("Hello, Windows Presentation Foundation!") End Sub End Class End Namespace

    En este ejemplo, el cdigo subyacente implementa una clase que se deriva de la clase Window. El atributo

    x:Class se utiliza para asociar el marcado a la clase de cdigo subyacente. Se llama a InitializeComponent

    desde el constructor de la clase de cdigo subyacente para combinar la interfaz de usuario definida en el

    marcado con la clase de cdigo subyacente. ((InitializeComponent se genera automticamente al generar la

    aplicacin, por lo que no se requiere su implementacin manual.) La combinacin de x:Class e

    InitializeComponent garantiza que la implementacin se inicializa correctamente cada vez que se crea. La clase

    de cdigo subyacente tambin implementa un controlador de eventos para el evento Click del botn. Cuando se

    hace clic en el botn, el controlador de eventos muestra un cuadro de mensaje llamando al mtodo

    MessageBox.Show.

    En la ilustracin siguiente se muestra el resultado de hacer clic en el botn.

    Aplicaciones

    .NET Framework, System.Windows, as como el cdigo de lenguaje marcado y subyacente, constituyen la base

    de la experiencia de programacin de aplicaciones en WPF. Adems, WPF cuenta con caractersticas completas

    para crear experiencias de usuario con contenido enriquecido. Para empaquetar este contenido y distribuirlo a

    los usuarios en forma de "aplicaciones", WPF proporciona tipos y servicios denominados colectivamente el

    modelo de aplicacin. El modelo de aplicacin admite la programacin de aplicaciones independientes y

    hospedadas en explorador.

    Aplicaciones independientes

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 9 de 445

    Para las aplicaciones independientes, puede utilizar la clase Window para crear las ventanas y cuadros de

    dilogo a los que se tiene acceso desde las barras de mens y las barras de herramientas. En la ilustracin

    siguiente se muestra una aplicacin independiente con una ventana principal y un cuadro de dilogo.

    Adems, puede utilizar los cuadros de dilogo siguientes de WPF: MessageBox, OpenFileDialog, SaveFileDialog

    y PrintDialog.

    Aplicaciones hospedadas en explorador

    Para las aplicaciones hospedadas en explorador, denominadas Aplicaciones del explorador XAML (XBAPs),

    puede crear pginas (Page) y funciones de pgina (PageFunction)) entre las que se puede navegar

    mediante hipervnculos (clases Hyperlink). En la ilustracin siguiente se muestra una pgina de XBAP

    hospedada en Internet Explorer 7.

    Las aplicaciones WPF se pueden hospedar en Microsoft Internet Explorer 6 y Internet Explorer 7. WPF

    proporciona las dos opciones siguientes de hosts de navegacin alternativos:

    Frame, para hospedar islas de contenido navegable en pginas o ventanas.

    NavigationWindow, para hospedar contenido navegable en una ventana completa.

    Clase Application

    Tanto las XBAPs como las aplicaciones independientes suelen ser bastante complejas y necesitan servicios

    adicionales de mbito de la aplicacin, lo que incluye administracin del inicio y de la duracin, as como

    propiedades y recursos compartidos. La clase Application encapsula todos estos servicios y algunos ms, y slo

    se puede implementar mediante XAML, como se muestra en el ejemplo siguiente.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 10 de 445

    Este cdigo de lenguaje marcado es la definicin de aplicacin de una aplicacin independiente, e indica a WPF

    que cree un objeto Application que abre MainWindow automticamente cuando se inicia la aplicacin.

    Un concepto que es fundamental entender acerca de Application es que proporciona una plataforma comn de

    compatibilidad para las aplicaciones independientes y hospedadas en explorador. Por ejemplo, el cdigo XAML

    anterior podra utilizarlo una aplicacin hospedada en explorador para navegar automticamente a una pgina

    al iniciar una XBAP, como se muestra en el ejemplo siguiente.

    Seguridad

    Dado que las XBAPs se hospedan en un explorador, la seguridad es importante. En particular, las XBAPs utilizan

    un recinto de seguridad de confianza parcial para aplicar restricciones menores o iguales a las que se imponen

    a las aplicaciones basadas en HTML. Adems, todas las caractersticas de HTML que es seguro ejecutar desde

    las XBAPs con confianza parcial se han probado mediante un proceso de seguridad completo.

    An as, la mayora de las caractersticas de WPF se pueden ejecutar con seguridad desde las XBAPs.

    Controles

    Las experiencias para el usuario proporcionadas por el modelo de aplicacin son controles construidos. En WPF,

    un "control" es un trmino general que se aplica a una categora de clases de WPF hospedadas en una ventana

    o una pgina, tienen una interfaz de usuario (UI) e implementa un comportamiento determinado.

    Lista controles de WPF

    A continuacin se muestra la lista de controles de WPF integrados.

    Botones: Button y RepeatButton.

    Cuadros de dilogo: OpenFileDialog, PrintDialog y SaveFileDialog.

    Entradas manuscritas digitales: InkCanvas y InkPresenter.

    Documentos: DocumentViewer, FlowDocumentPageViewer, FlowDocumentReader,

    FlowDocumentScrollViewer y StickyNoteControl.

    Entrada: TextBox, RichTextBox y PasswordBox.

    Diseo: Border, BulletDecorator, Canvas, DockPanel, Expander, Grid, GridView, GridSplitter,

    GroupBox, Panel, ResizeGrip, Separator, ScrollBar, ScrollViewer, StackPanel, Thumb, Viewbox,

    VirtualizingStackPanel, Window y WrapPanel.

    Multimedia: Image, MediaElement y SoundPlayerAction.

    Mens: ContextMenu, Menu y ToolBar.

    Navegacin: Frame, Hyperlink, Page, NavigationWindow y TabControl.

    Seleccin: CheckBox, ComboBox, ListBox, TreeView y RadioButton, Slider.

    Informacin para el usuario: AccessText, Label, Popup, ProgressBar, StatusBar, TextBlock y ToolTip.

    Acciones del usuario y comandos

    Los controles casi siempre detectan las acciones del usuario y responden a ellas. El sistema de entrada de WPF

    utiliza eventos directos y enrutados para admitir entradas de texto, la administracin del enfoque y la posicin

    del mouse.

    Las aplicaciones suelen tener requisitos de entrada complejos. WPF proporciona un sistema de comandos que

    separa las acciones de entrada del usuario del cdigo que responde a esas acciones.

    Diseo

    Al crear una interfaz de usuario, se organizan los controles segn su ubicacin y tamao para crear un diseo.

    Un requisito fundamental de cualquier diseo es adaptarse a los cambios de tamao de la ventana y de

    configuracin de pantalla. En lugar de obligarle a escribir cdigo que adapte el diseo en estas circunstancias,

    WPF le proporciona un sistema de diseo extensible de primera clase.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 11 de 445

    La piedra angular del sistema de diseo es la situacin relativa, que aumenta la capacidad de adaptacin a los

    cambios en la configuracin de las ventanas y de la pantalla. Adems, el sistema de diseo administra la

    negociacin entre los controles para determinar el diseo. La negociacin es un proceso de dos pasos: en

    primer lugar, el control indica a su elemento primario qu ubicacin y tamao necesita; en segundo lugar, el

    elemento primario indica al control de qu espacio dispone.

    El sistema de diseo se expone a los controles secundarios mediante las clases base de WPF. Para los diseos

    comunes, como son las cuadrculas, el apilamiento y el acoplamiento, WPF incluye varios controles de diseo:

    Canvas: los controles secundarios proporcionan su propio diseo.

    DockPanel: los controles secundarios se alinean con los bordes del panel.

    Grid: los controles secundarios se sitan por filas y columnas.

    StackPanel: los controles secundarios se apilan vertical u horizontalmente.

    VirtualizingStackPanel: los controles secundarios se organizan en una vista "virtual" de una sola lnea

    en sentido horizontal o vertical.

    WrapPanel: los controles secundarios se sitan por orden de izquierda a derecha y se ajustan a la lnea

    siguiente cuando hay ms controles de los que caben en la lnea actual.

    En el ejemplo siguiente se utiliza un control DockPanel para situar varios controles TextBox.

    Dock = "Top" Dock = "Bottom" Dock = "Left" This TextBox "fills" the remaining space.

    DockPanel permite que los controles secundarios TextBox le indiquen cmo se deben organizar. Para ello,

    DockPanel implementa una propiedad Dock que se expone a los controles secundarios, a fin de para permitir

    que cada uno de ellos especifique un estilo de acoplamiento.

    Nota:

    Una propiedad implementada por un control principal para que la utilicen los controles secundarios es una construccin de WPF denominada propiedad asociada.

    En la ilustracin siguiente se muestra el resultado del marcado XAML del ejemplo anterior.

    Enlace de datos

    La mayora de las aplicaciones se crean para proporcionar recursos a los usuarios que les permitan ver y editar

    los datos. Para aplicaciones WPF, el trabajo de almacenar los datos y tener acceso a ellos se proporciona

    mediante tecnologas existentes, como Microsoft SQL Server y ADO.NET. Despus de obtener acceso a los

    datos y de cargarlos a los objetos administrados de una aplicacin, comienza la tarea ardua de las aplicaciones

    WPF. En esencia, esto implica dos cosas:

    1. Copiar los datos desde los objetos administrados en los controles, donde los datos se pueden mostrar

    y editar.

    2. Asegurarse de que los cambios realizados en los datos mediante los controles se vuelvan a copiar en

    los objetos administrados.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 12 de 445

    Para simplificar la programacin de aplicaciones, WPF proporciona un motor de enlace de datos que realiza

    estos pasos automticamente. La unidad que constituye el ncleo del motor de enlace de datos es la clase

    Binding, encargada de enlazar un control (el destino del enlace) a un objeto de datos (el origen del enlace).

    Esta relacin se muestra en la ilustracin siguiente.

    En el ejemplo siguiente se muestra cmo enlazar un control TextBox a una instancia de un objeto Person

    personalizado. La implementacin de Person se muestra en el cdigo siguiente.

    Namespace SDKSample Class Person Private _name As String = "No Name" Public Property Name() As String Get Return _name End Get Set(ByVal value As String) _name = value End Set End Property End Class End Namespace

    El marcado siguiente enlaza el control TextBox a una instancia de un objeto Person personalizado.

    ... ... Imports System.Windows ' Window Namespace SDKSample Partial Public Class DataBindingWindow Inherits Window Public Sub New() InitializeComponent() ' Create Person data source Dim person As Person = New Person() ' Make data source available for binding Me.DataContext = person End Sub End Class End Namespace

    En este ejemplo, se crea una instancia de la clase Person en el cdigo subyacente y se establece como el

    contexto de datos de DataBindingWindow. En el marcado, la propiedad Text de TextBox se enlaza a la

    propiedad Person.Name (mediante la sintaxis "{Binding ... }" de XAML). Este cdigo XAML indica a WPF que

    enlace el control TextBox al objeto Person almacenado en la propiedad DataContext de la ventana.

    El motor de enlace de datos de WPF proporciona compatibilidad adicional que incluye validacin, ordenacin,

    filtrado y agrupacin. Adems, el enlace de datos admite el uso de plantillas de datos, a fin de crear una

    interfaz de usuario personalizada para los datos enlazados cuando la interfaz de usuario mostrada por los

    controles estndar de WPF no es adecuada.

    Grficos

    WPF presenta un conjunto extenso, escalable y flexible de caractersticas de grficos que aportan las ventajas

    siguientes:

    Grficos independientes de la resolucin e independientes del dispositivo. La unidad de medida bsica

    del sistema de grficos de WPF es el pxel independiente del dispositivo, que es 1/96 de pulgada,

    independientemente de la resolucin de pantalla real, y que proporciona la base para la representacin

    independiente de la resolucin y del dispositivo. Cada pxel independiente del dispositivo se escala

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 13 de 445

    automticamente para coincidir con el valor de puntos por pulgada (ppp) del sistema en que se

    representa.

    Precisin mejorada. El sistema de coordenadas de WPF se mide con nmeros de punto flotante de

    precisin doble, en lugar de precisin simple. Las transformaciones y los valores de opacidad tambin

    se expresan como doble precisin. WPF admite tambin una amplia gama de colores (scRGB) y

    proporciona compatibilidad integrada para administrar las entradas desde espacios de color diferentes.

    Compatibilidad con grficos avanzados y animacin. WPF simplifica la programacin de grficos

    administrando automticamente las escenas de animacin; no tendr que preocuparse por el

    procesamiento de escenas, los bucles de representacin ni la interpolacin bilineal. Adems, WPF

    admite la comprobacin de clics y proporciona compatibilidad plena con la composicin alfa.

    Aceleracin de hardware. El sistema de grficos de WPF saca partido del hardware de grficos para

    minimizar el uso de la CPU.

    Formas 2D

    WPF proporciona una biblioteca de formas 2D comunes dibujadas mediante vectores, como los rectngulos y

    las elipses que se muestran en la ilustracin siguiente.

    Una funcin interesante de las formas es que no sirven nicamente para su presentacin; las formas

    implementan muchas de las caractersticas que cabe esperar de los controles, incluida la entrada de datos

    desde el teclado y el mouse. En el ejemplo siguiente se muestra el control del evento MouseUp de una forma

    Ellipse.

    Imports System.Windows ' Window, MessageBox Imports System.Windows.Input ' MouseButtonEventArgs Namespace SDKSample Public Class EllipseEventHandlingWindow Inherits Window Public Sub New() InitializeComponent() End Sub Private Sub clickableEllipse_MouseUp(ByVal sender As Object, ByVal e As MouseButtonEventArgs) MessageBox.Show("You clicked the ellipse!") End Sub End Class End Namespace

    En la ilustracin siguiente se muestra lo que el cdigo anterior genera.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 14 de 445

    Geometras 2D

    Las formas 2D proporcionadas por WPF abarcan el conjunto estndar de formas bsicas. Sin embargo, puede

    que sea preciso crear formas personalizadas para facilitar el diseo de una interfaz de usuario personalizada.

    Para este fin, WPF proporciona las geometras. En la ilustracin siguiente se muestra el uso de geometras para

    crear una forma personalizada que se puede dibujar directamente, utilizar como un pincel o utilizar para

    recortar otras formas y controles.

    Los objetos Path se pueden utilizar para dibujar formas cerradas o abiertas, varias formas o incluso formas

    curvas.

    Los objetos Geometry se pueden utilizar para el recorte, la comprobacin de visitas y la representacin de

    datos de grficos 2D.

    Efectos 2D

    Un subconjunto de las funciones 2D de WPF son los efectos visuales, tales como degradados, mapas de bits,

    dibujos, pintar con vdeos, rotacin, ajuste de escala y sesgo. Todas ellas se aplican mediante pinceles; en la

    siguiente ilustracin se muestran algunos ejemplos.

    Representacin 3D

    WPF tambin incluye funciones de representacin 3D que se integran con los grficos 2D para permitir la

    creacin de UIs ms interesantes y apasionantes. Por ejemplo, en la ilustracin siguiente se muestran

    imgenes 2D representadas en formas 3D.

    Animacin

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 15 de 445

    La compatibilidad de WPF con la animacin permite hacer que los controles crezcan, tiemblen, giren o se

    desvanezcan, crear transiciones de pgina interesantes, y mucho ms. Puede animar la mayora de las clases

    de WPF, incluso las personalizadas. En la ilustracin siguiente se muestra una animacin simple en accin.

    Multimedia

    Una manera de mostrar un contenido enriquecido es utilizar medios audiovisuales (multimedia). WPF

    proporciona compatibilidad especial con imgenes, vdeo y audio.

    Imgenes

    Las imgenes estn presentes en la mayora de las aplicaciones y WPF proporciona varias maneras de

    utilizarlas. En la ilustracin siguiente se muestra una interfaz de usuario con un cuadro de lista que contiene

    imgenes en miniatura. Cuando se selecciona una miniatura, aparece la imagen a tamao completo.

    Vdeo y audio

    El control MediaElement es capaz de reproducir vdeo y audio y presenta la flexibilidad suficiente para constituir

    la base de un reproductor multimedia personalizado. El marcado XAML siguiente implementa un reproductor

    multimedia.

    En la ventana de la ilustracin siguiente se muestra el control MediaElement en accin.

    Texto y tipografa

    Para facilitar una representacin de texto de gran calidad, WPF ofrece las caractersticas siguientes:

    Compatibilidad con fuentes OpenType.

    Mejoras de ClearType.

    Alto rendimiento que saca partido de la aceleracin de hardware.

    Integracin de texto con multimedia, grficos y animacin.

    Compatibilidad con fuentes internacionales y mecanismos de reserva.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 16 de 445

    A modo de demostracin de la integracin del texto con grficos, en la ilustracin siguiente se muestra la

    aplicacin de decoraciones al texto.

    Documentos

    WPF permite trabajar de forma nativa con tres tipos de documentos: documentos de flujo, documentos fijos y

    documentos de XML Paper Specification (XPS). WPF proporciona tambin servicios para crear, ver, administrar,

    anotar, empaquetar e imprimir documentos.

    Documentos dinmicos

    Los documentos dinmicos se han diseado para optimizar su presentacin y legibilidad ajustando

    dinmicamente su contenido y modificando su flujo cuando se producen cambios en el tamao de la ventana y

    la configuracin de pantalla. En el marcado XAML siguiente se muestra la definicin de FlowDocument.

    Flow Document Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure. ...

    En el ejemplo siguiente se muestra cmo cargar un documento dinmico en FlowDocumentReader para leerlo,

    realizar bsquedas e imprimirlo.

    Imports System.Windows 'Window Imports System.Windows.Documents 'FlowDocument Imports System.IO 'FileStream, FileMode Imports System.Windows.Markup 'XamlReader Namespace SDKSample Public Class FlowDocumentReaderWindow Inherits Window Public Sub New() Me.InitializeComponent() Using stream1 As FileStream = _ New FileStream("AFlowDocument.xaml", _ FileMode.Open, FileAccess.Read) Dim document1 As FlowDocument = _ TryCast(XamlReader.Load(stream1), FlowDocument) Me.flowDocumentReader.Document = document1 End Using End Sub End Class End Namespace

    En el ejemplo siguiente se muestra el resultado.

    Documentos fijos

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 17 de 445

    Los documentos fijos estn destinados a aplicaciones que requieren una presentacin con representacin fiel (lo

    que se ve es lo que se obtiene, o WYSIWYG, en sus siglas en ingls) precisa, especialmente por lo que respecta

    a su impresin. Los usos tpicos para los documentos fijos incluyen la creacin de publicaciones, el

    procesamiento de textos y el diseo de formularios, donde es vital que se respete el diseo de pgina original.

    Los documentos fijos conservan la organizacin precisa de su contenido de una manera independiente del

    dispositivo. Por ejemplo, un documento fijo mostrado en una pantalla de 96 puntos por pulgada (ppp) aparece

    exactamente igual que cuando se imprime en una impresora lser de 600 ppp o una mquina tipogrfica

    fotogrfica de 4800 ppp. El diseo permanece inalterado en todos los casos, aunque la calidad del documento

    vara segn las funciones de cada dispositivo.

    Documentos XPS

    Los documentos de XML Paper Specification (XPS) se basan en documentos fijos de WPF. Los documentos de

    XPS se describen con un esquema basado en XML que bsicamente es una representacin en forma de pgina

    de documentos electrnicos. XPS es un formato de documento abierto habilitado para varios exploradores y

    diseado para facilitar la creacin, el uso compartido, la impresin y el almacenamiento de documentos

    paginados. Entre las caractersticas importantes de la tecnologa XPS se incluyen:

    Empaquetado de documentos XPS como archivos ZipPackage conformes con la especificacin Open

    Packaging Conventions (OPC).

    Hospedaje en aplicaciones independientes y basadas en explorador.

    Generacin y manipulacin manuales de documentos XPS desde las aplicaciones WPF.

    Representacin de gran fidelidad gracias al establecimiento como destino de la mxima calidad del

    dispositivo de salida.

    Puesta en cola para impresin de Windows Vista.

    Enrutamiento directo de documentos a impresoras compatibles con XPS.

    Integracin de la interfaz de usuario con DocumentViewer.

    En la ilustracin siguiente se muestra un documento XPS mostrado en un control DocumentViewer.

    DocumentViewer tambin permite a los usuarios cambiar la vista de los documentos XPS, realizar bsquedas en

    ellos e imprimirlos.

    Anotaciones

    Las anotaciones son notas o comentarios que se agregan a los documentos para marcar la informacin o

    resaltar elementos de inters, a fin de consultarlos ms adelante. Aunque escribir notas en documentos

    impresos es fcil, la posibilidad de "escribir" notas en los documentos electrnicos con frecuencia es limitada o

    no est disponible en absoluto. Sin embargo, en WPF se proporciona un sistema de anotaciones que admite la

    insercin de notas rpidas y el resaltado. Adems, estas anotaciones se pueden aplicar a documentos

    hospedados en el control DocumentViewer, como se muestra en la ilustracin siguiente.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 18 de 445

    Empaquetado

    Las API System.IO.Packaging de WPF permiten que las aplicaciones organicen los datos, el contenido y los

    recursos en un nico documento ZIP porttil, sencillo de distribuir y de fcil acceso. Es posible incluir firmas

    digitales para autenticar los elementos contenidos en un paquete y comprobar que el elemento firmado no se

    haya manipulado ni modificado. Tambin puede cifrar los paquetes mediante la administracin de derechos

    para restringir el acceso a la informacin protegida.

    Impresin

    .NET Framework incluye un subsistema de impresin al que WPF aporta, adems, compatibilidad con el control

    de sistemas de impresin mejorados. Las mejoras de impresin incluyen las siguientes:

    Instalacin en tiempo real de servidores de impresin y colas remotos.

    Deteccin dinmica de funciones de impresora.

    Configuracin dinmica de opciones de impresin.

    Modificacin del enrutamiento y las prioridades de los trabajos de impresin.

    Los documentos XPS presenta, adems, una mejora fundamental del rendimiento. La ruta de acceso de Interfaz

    de dispositivo grfico de Microsoft Windows (GDI) de impresin suele requerir dos conversiones:

    La primera conversin del documento a un formato de procesador de impresin, como Metarchivo

    mejorado (EMF).

    Una segunda conversin al lenguaje de descripcin de pginas de la impresora, como PCL o PostScript.

    Sin embargo, los documentos XPS evitan estas conversiones porque un componente del formato de archivo XPS

    es un lenguaje de procesador de impresin y un lenguaje de descripcin de pginas. Esta compatibilidad ayuda

    a reducir tamao del archivo de cola y las cargas de las impresoras integradas en red.

    Personalizar las aplicaciones WPF

    Hasta este punto, hemos estudiado las unidades de creacin de WPF fundamentales para la programacin de

    aplicaciones. El modelo de aplicacin se utiliza para hospedar y distribuir el contenido de las aplicaciones, que

    est compuesto principalmente de controles. Para simplificar la organizacin de los controles en una interfaz de

    usuario y asegurarse de que la organizacin se conserve aunque se modifiquen el tamao de la ventana y la

    configuracin de pantalla, se utiliza el sistema de diseo de WPF. Dado que la mayora de las aplicaciones

    permiten a los usuarios interactuar con los datos, los enlaces de datos se utilizan para reducir el trabajo de

    integracin de la interfaz de usuario con esos datos. A fin de mejorar la apariencia visual de la aplicacin, se

    utiliza toda la gama de grficos, animacin y multimedia que WPF proporciona. Por ltimo, si la aplicacin

    funciona a travs de texto y documentos, puede utilizar las funciones de tipografa, documentos, anotacin,

    empaquetado e impresin de WPF.

    Sin embargo, con frecuencia estos elementos fundamentales no bastan para crear y administrar una

    experiencia del usuario realmente diferenciada y visualmente impactante. Puede que los controles de WPF no se

    integren con la apariencia deseada de la aplicacin. Es posible que los datos no se muestren del modo ms

    eficaz. La apariencia y el funcionamiento predeterminados de los temas de Windows pueden no ser adecuados

    para proporcionar la experiencia global del usuario con respecto a la aplicacin. En muchos aspectos, una

    tecnologa de presentacin requiere la extensibilidad visual tanto como cualquier otro tipo de extensibilidad.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 19 de 445

    Por esta razn, WPF proporciona gran variedad de mecanismos para la creacin de experiencias de usuario

    nicas, incluido un modelo de contenido enriquecido para los controles, desencadenadores, plantillas de

    controles y datos, estilos, recursos de la interfaz de usuario, temas y mscaras.

    Modelo de contenido

    El propsito principal de la mayora de los controles de WPF es mostrar contenido. En WPF, el tipo y nmero de

    elementos que pueden constituir el contenido de un control se denomina el modelo de contenido del control.

    Algunos controles pueden contener un solo elemento y tipo de contenido; por ejemplo, el contenido de un

    control TextBox es un valor de tipo String que est asignado a la propiedad Text. En el ejemplo siguiente se

    establece el contenido de TextBox.

    ... ...

    En la ilustracin siguiente se muestra el resultado.

    Otros controles, sin embargo, pueden contener varios elementos con tipos diferentes de contenido; el contenido

    de un control Button, especificado por la propiedad Content, puede contener gran variedad de elementos, entre

    los que se incluyen controles de diseo, texto, imgenes y formas. En el ejemplo siguiente se muestra un

    control Button con contenido que incluye DockPanel, Label, Border y MediaElement.

    ... Click Me! ...

    En la ilustracin siguiente se muestra el contenido de este botn.

    Desencadenadores

    Aunque el propsito principal del marcado XAML es implementar la apariencia de una aplicacin, tambin puede

    utilizar XAML para implementar algunos aspectos del comportamiento de una aplicacin. Un ejemplo de ello es

    el uso de desencadenadores para cambiar la apariencia de una aplicacin de acuerdo con las interacciones con

    el usuario.

    Plantillas de control

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 20 de 445

    Las UIs predeterminadas para los controles de WPF suelen construirse a partir de otros controles y formas. Por

    ejemplo, un control Button est compuesto de los controles ButtonChrome y ContentPresenter. ButtonChrome

    proporciona la apariencia del botn estndar, mientras que ContentPresenter muestra el contenido del botn,

    especificado por la propiedad Content.

    A veces, la apariencia predeterminada de un control puede ser incongruente con la apariencia global de una

    aplicacin. En este caso, puede utilizar una plantilla de control ControlTemplate para cambiar la apariencia de la

    interfaz de usuario del control sin modificar su contenido ni su comportamiento.

    En el ejemplo siguiente se muestra cmo cambiar la apariencia de un control Button mediante ControlTemplate.

    Imports System.Windows ' Window, RoutedEventArgs, MessageBox Namespace SDKSample Public Class ControlTemplateButtonWindow Inherits Window Public Sub New() InitializeComponent() End Sub Private Sub button_Click(ByVal sender As Object, ByVal e As RoutedEventArgs) MessageBox.Show("Hello, Windows Presentation Foundation!") End Sub End Class End Namespace

    En este ejemplo, la interfaz de usuario del botn predeterminado se ha reemplazado por una forma Ellipse que

    tiene un borde azul marino y se rellena mediante RadialGradientBrush. El control ContentPresenter muestra el

    contenido del control Button, "Click Me!" (Haga clic aqu!). Al hacer clic en Button, se provoca como siempre el

    evento Click, que forma parte del comportamiento predeterminado del control Button. El resultado se muestra

    en la ilustracin siguiente.

    Plantillas de datos

    Mientras que una plantilla de control permite especificar la apariencia de un control, una plantilla de datos

    permite especificar la apariencia del contenido del control. Las plantillas de datos se utilizan con frecuencia para

    mejorar la manera de mostrar los datos enlazados. En la ilustracin siguiente se muestra la apariencia

    predeterminada de un control ListBox enlazado a una coleccin de objetos Task, donde cada tarea tiene un

    nombre, descripcin y prioridad.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 21 de 445

    La apariencia predeterminada es la que cabra esperar de un control ListBox. Sin embargo, la apariencia

    predeterminada de cada tarea contiene nicamente el nombre de tarea. Para mostrar el nombre de tarea, la

    descripcin y la prioridad, la apariencia predeterminada de los elementos de lista enlazados al control ListBox

    se debe modificar, mediante DataTemplate. En el cdigo XAML siguiente se define una plantilla de datos

    DataTemplate, que se aplica a cada tarea mediante el atributo ItemTemplate.

    ... ... ...

    En la ilustracin siguiente se muestra el efecto de este cdigo.

    Observe que ListBox ha conservado su comportamiento y su apariencia global; nicamente ha cambiado la

    apariencia del contenido mostrado por el cuadro de lista.

    Estilos

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 22 de 445

    Los estilos permiten a los programadores y diseadores normalizar un aspecto determinado de sus productos.

    WPF proporciona un modelo de estilo slido, que es la base del elemento Style. En el ejemplo siguiente se crea

    un estilo que establece el color de fondo de todos los controles Button de una ventana en Orange.

    ... ... Click Me! Don't Click Me! Click Me! ...

    Dado que este estilo tiene como destino todos los controles Button, se aplica automticamente a todos los

    botones de la ventana, como se muestra en la ilustracin siguiente.

    Recursos

    Los controles de una aplicacin deben tener la misma apariencia, que puede incluir todo tipo de recursos, desde

    fuentes y colores de fondo hasta plantillas de control, pasando por las plantillas de datos y los estilos. Puede

    utilizar la compatibilidad de WPF con los recursos de interfaz de usuario (UI) para encapsular estos recursos en

    una ubicacin nica y poder reutilizarlos.

    En el ejemplo siguiente se define un color de fondo comn que es compartido por los controles Button y Label.

    ... One Button One Label ...

    En este ejemplo se implementa un recurso de color de fondo mediante el elemento de propiedad

    Window.Resources. Este recurso est disponible para todos los elementos secundarios de Window. Existe gran

    variedad de mbitos de recursos, incluidos los siguiente, que se muestran en el orden en que se resuelven:

    1. Un control individual (que utiliza la propiedad FrameworkElement..::.Resources heredada).

    2. Window o Page (que tambin utiliza la propiedad FrameworkElement..::.Resources heredada).

    3. Application (que utiliza la propiedad Application..::.Resources).

    La variedad de mbitos aporta flexibilidad al programador con respecto a la manera de definir y compartir los

    recursos.

    Como alternativa a la asociacin directa de los recursos a un mbito determinado, puede empaquetar uno o

    varios recursos mediante un ResourceDictionary independiente al que puede hacer referencia en otras partes de

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 23 de 445

    una aplicacin. En el ejemplo siguiente se define un color de fondo predeterminado en un diccionario de

    recursos.

    ...

    En el ejemplo siguiente se hace referencia al diccionario de recursos definido en el ejemplo anterior para

    compartirlo en toda la aplicacin.

    ...

    Los recursos y diccionarios de recursos constituyen el fundamento de la compatibilidad de WPF con los temas y

    las mscaras.

    Temas y mscaras

    Desde una perspectiva visual, un tema define la apariencia global de Windows y de las aplicaciones que se

    ejecutan en su seno. Windows incluye varios temas. Por ejemplo, Microsoft Windows XP se distribuye con los

    temas clsicos de Windows XP y Windows, mientras que Windows Vista se distribuye con los temas clsicos de

    Windows Vista y Windows. La apariencia definida por un tema establece la apariencia predeterminada de una

    aplicacin WPF. Sin embargo, WPF no se integra directamente con los temas de Windows. Como la apariencia

    de WPF se define mediante plantillas, WPF incluye una plantilla para cada uno de los temas conocidos de

    Windows, como Aero (Windows Vista), Clsico (Microsoft Windows 2000), Luna (Microsoft Windows XP) y

    Royale (Microsoft Windows XP Media Center Edition 2005). Estos temas estn empaquetados en diccionarios de

    recursos que se resuelven cuando no se encuentran los recursos correspondientes en una aplicacin. Muchas

    aplicaciones se basan en estos temas para definir su apariencia visual; mantener la coherencia con la

    apariencia de Windows ayuda a los usuarios a familiarizarse con las aplicaciones ms fcilmente.

    Por otro lado, la experiencia del usuario para algunas aplicaciones no procede necesariamente de los temas

    estndar. Por ejemplo, Microsoft Windows Media Player funciona a travs de datos de audio y vdeo y saca

    partido de un estilo diferente de experiencia del usuario. Tales UIs tienden a proporcionar temas

    personalizados, especficos de cada aplicacin. Se denominan mscaras, y las aplicaciones con mscaras suelen

    proporcionar enlaces que permiten a los usuarios personalizar diversos aspectos de la mscara. Microsoft

    Windows Media Player tiene varias mscaras prefabricadas, as como una serie de mscaras de otros

    fabricantes.

    Tanto los temas como las mscaras de WPF se definen con toda facilidad mediante los diccionarios de recursos.

    En el ejemplo siguiente se muestran ejemplos de definiciones de mscaras.

    ...

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 24 de 445

    ... ... ...

    Controles personalizados

    Aunque WPF proporciona una amplsima compatibilidad con funciones de personalizacin, puede encontrar

    situaciones en que los controles existentes de WPF no satisfagan las necesidades de la aplicacin o de los

    usuarios. Esto puede suceder cuando:

    La interfaz de usuario que necesita no se puede crear personalizando la apariencia y el funcionamiento

    de las implementaciones de WPF existentes.

    Las implementaciones de WPF existentes no admiten el comportamiento que se necesita (o lo admiten,

    pero no fcilmente).

    Sin embargo, en este punto puede sacar partido de uno de los tres modelos de WPF para crear un nuevo

    control. Cada modelo est destinado a un escenario concreto y exige que el control personalizado se derive de

    una clase base de WPF determinada. A continuacin se muestran los tres modelos:

    Modelo de control de usuario. El control personalizado se deriva de UserControl y se crea a partir de

    uno o varios controles.

    Modelo de control. El control personalizado se deriva de Control y se utiliza para generar

    implementaciones que separan su comportamiento de su apariencia mediante plantillas, de un modo

    muy similar a la mayora de los controles de WPF. Al derivarse de Control, aporta mayor libertad para

    la creacin de una interfaz de usuario personalizada que los controles de usuario, pero puede requerir

    ms esfuerzo.

    Modelo de elemento de marco de trabajo. Un control personalizado se deriva de FrameworkElement

    cuando su apariencia se define mediante la lgica de representacin personalizada (no mediante

    plantillas).

    En el ejemplo siguiente se muestra un control numrico personalizado de arriba/abajo derivado de UserControl.

    Up

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 25 de 445

    Down imports System 'EventArgs imports System.Windows 'DependencyObject, DependencyPropertyChangedEventArgs, ' FrameworkPropertyMetadata, PropertyChangedCallback, ' RoutedPropertyChangedEventArgs imports System.Windows.Controls 'UserControl Namespace SDKSample ' Interaction logic for NumericUpDown.xaml Partial Public Class NumericUpDown Inherits System.Windows.Controls.UserControl 'NumericUpDown user control implementation ... End Class End Namespace

    En el ejemplo siguiente se muestra el cdigo XAML necesario para incorporar el control de usuario a una

    ventana (Window).

    ... ...

    En la ilustracin siguiente se muestra el control NumericUpDown hospedado en una ventana Window.

    Procedimientos recomendados en WPF

    Como sucede con cualquier plataforma de programacin, WPF se puede utilizar de diversas maneras

    para lograr el resultado deseado. A fin de asegurarse de que sus aplicaciones WPF proporcionen la

    experiencia de usuario necesaria y cumplan las exigencias del pblico en general, existen

    procedimientos recomendados de accesibilidad, globalizacin y localizacin, y rendimiento.

    Resumen

    WPF es una completa tecnologa de presentacin para generar gran variedad aplicaciones cliente impactantes

    desde el punto de vista visual. En esta introduccin se ha proporcionado una introduccin general a las

    principales caractersticas de WPF.

    El paso siguiente consiste en generar aplicaciones WPF.

    Durante el proceso de creacin, puede consultar de nuevo esta introduccin para repasar las caractersticas

    clave y encontrar referencias a artculos donde se abordan en mayor profundidad todas las caractersticas

    tratadas en esta introduccin.

    1.2. Informacin General sobre Windows Presentation Foundation

    Este tutorial proporciona una introduccin bsica al desarrollo de una aplicacin de Windows Presentation

    Foundation (WPF), que incluye los elementos comunes a la mayora de las aplicaciones de WPF: marcado

    Lenguaje de marcado de aplicaciones extensible (XAML), cdigo subyacente, definiciones de aplicacin,

    controles, diseo, enlace de datos y estilos.

    Resumen

    Este tutorial le guiar a lo largo del desarrollo de una aplicacin bsica de WPF mediante los pasos siguientes.

    Definir el marcado XAML para disear la apariencia de la interfaz de usuario (UI) de la aplicacin.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 26 de 445

    Escribir cdigo que determine el comportamiento de la aplicacin.

    Crear una definicin de aplicacin para administrar la aplicacin.

    Agregar controles y diseo para crear la interfaz de usuario de la aplicacin.

    Crear estilos que aporten una apariencia coherente a toda la interfaz de usuario de una aplicacin.

    Enlazar la interfaz de usuario a datos para rellenar la interfaz de usuario a partir de datos y mantener

    los datos sincronizados con la interfaz de usuario.

    Cuando termine el tutorial, habr generado una aplicacin independiente de Windows que permitir a los

    usuarios ver los informes de gastos de las personas seleccionadas. La aplicacin constar de varias pginas de

    WPF hospedadas en una ventana del estilo del explorador.

    Crear los archivos de cdigo de la aplicacin

    En este paso, crear la infraestructura de la aplicacin, que incluye una definicin de aplicacin, dos pginas y

    una imagen.

    1. Cree un nuevo archivo de marcado XAML denominado App.xaml. Este archivo define una aplicacin de

    WPF y tambin se utiliza para especificar la interfaz de usuario que debe mostrarse automticamente

    cuando se inicia la aplicacin; en este caso, HomePage.xaml (que se crear en el paso siguiente). El

    marcado XAML debe ser similar al que se muestra a continuacin:

    2. Cree un nuevo archivo de marcado XAML denominado HomePage.xaml, que ser la primera pgina

    que se muestre cuando se inicie la aplicacin. HomePage.xaml mostrar una lista de personas y el

    usuario podr seleccionar en esa lista la persona cuyo informe de gastos desee mostrar. Agregue un

    elemento Page a HomePage.xaml, con la configuracin siguiente:

    La barra de ttulo del explorador es "ExpenseIt".

    El ancho de la ventana del explorador es de 550 pxeles independientes del dispositivo.

    El alto de la ventana del explorador es de 350 pxeles independientes del dispositivo.

    El ttulo de la pgina es "ExpenseIt - Home".

    El marcado XAML debe ser similar al que se muestra a continuacin:

    3. Cree un nuevo archivo de cdigo denominado HomePage.xaml.cs. Este archivo ser el archivo de

    cdigo subyacente que contiene el cdigo para controlar los eventos declarados en HomePage.xaml. El

    cdigo debe ser similar al que se muestra a continuacin:

    using System; using System.Windows; using System.Windows.Controls; using System.Windows.Navigation; namespace ExpenseIt { public partial class HomePage : Page { public HomePage() { InitializeComponent(); } } }

    4. Cree un nuevo archivo de marcado XAML denominado ExpenseReportPage.xaml. Agregue un elemento

    Page y establezca "ExpenseIt - View Expense Report" como ttulo de pgina. Esta pgina mostrar el

    informe de gastos de la persona que est seleccionada en HomePage.xaml. El marcado XAML debe ser

    similar al que se muestra a continuacin:

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 27 de 445

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="ExpenseIt.ExpenseReportPage" Title="ExpenseIt - View Expense Report">

    5. Cree un nuevo archivo denominado ExpenseReportPage.xaml.cs. Este archivo ser un archivo de

    cdigo subyacente que enlace los datos del informe de gastos a la interfaz de usuario definida en

    ExpenseReportPage.xaml. El cdigo debe ser similar al que se muestra a continuacin:

    using System; using System.Windows; using System.Windows.Controls; using System.Windows.Navigation; namespace ExpenseIt { public partial class ExpenseReportPage : Page { public ExpenseReportPage() { InitializeComponent(); } } }

    6. Agregue una imagen denominada watermark.png a la misma carpeta que los cinco archivos de cdigo

    que cre en los pasos anteriores. Puede crear su propia imagen o copiar el archivo del mismo nombre del

    cdigo de ejemplo.

    Generar y ejecutar la aplicacin

    En este paso, utilizar MSBuild para generar la aplicacin que defini en la seccin anterior.

    1. Cree un nuevo archivo denominado ExpenseIt.csproj. Este archivo ser el archivo de MSBuild, que es

    un archivo XML especial que contiene la configuracin de compilacin de su aplicacin e incluye los

    siguientes elementos:

    Las variables de compilacin globales para el proyecto compilado, como el nombre del

    ensamblado generado, el tipo de ensamblado que debe generarse y la carpeta en la que debe

    agregarse el ensamblado generado.

    Referencias a los archivos de cdigo.

    Referencias a los ensamblados de Microsoft .NET Framework que contienen los tipos utilizados

    por la aplicacin.

    El contenido del archivo de compilacin debe ser similar al que se muestra a continuacin:

    ExpenseIt winexe bin\$(Configuration)\

    2. Abra una ventana de comandos en la misma carpeta donde se encuentra el archivo de proyecto y los

    archivos de cdigo de la aplicacin.

    3. Desde el smbolo del sistema, ejecute el siguiente comando:

    MSBuild ExpenseIt.csproj

    En el caso de Microsoft Visual Basic .NET, ejecute el siguiente comando en su lugar:

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 28 de 445

    MSBuild ExpenseIt.vbproj

    Para compilar y ejecutar la aplicacin mediante Visual Studio, abra el archivo de proyecto en Visual

    Studio y presione F5.

    Nota:

    Visual Studio 2005 genera automticamente un archivo de proyecto. Dado que en este tutorial no se da por hecho que se haya instalado Visual Studio, se detalla el proceso de creacin de un archivo de proyecto. Si est utilizando Visual Studio para completar este tutorial, sobrescriba el contenido del archivo .csproj generado por el texto de MSBuild anterior.

    1. Abra la carpeta que contiene el archivo ejecutable de la aplicacin generado, es decir, expenseit.exe.

    En caso de que haya generado el archivo desde el smbolo del sistema, expenseit.exe se encontrar en la

    carpeta siguiente:

    Carpeta que contiene los archivos de cdigo de la aplicacin \bin\

    Si ha generado el archivo utilizando Visual Studio, expenseit.exe se encontrar en la carpeta siguiente:

    Carpeta que contiene los archivos de cdigo de la aplicacin \bin\debug\

    2. Desde el smbolo del sistema, ejecute expenseit.exe. En la siguiente ilustracin se muestra la

    aplicacin en ejecucin.

    Agregar el diseo

    El diseo proporciona un modo ordenado de colocar los elementos de la interfaz de usuario, y tambin controla

    el tamao y la posicin de los mismos cuando la interfaz de usuario cambia de tamao. Normalmente, para

    agregar el diseo a la interfaz de usuario se utiliza uno de los controles de diseo siguientes:

    Canvas

    DockPanel

    Grid

    StackPanel

    VirtualizingStackPanel

    WrapPanel

    Cada uno de ellos admite un tipo de diseo especial para sus elementos secundarios. Es posible cambiar de

    tamao las pginas de ExpenseIt, y cada pgina tiene elementos organizados horizontal y verticalmente junto

    con otros elementos. Por lo tanto, Grid es el elemento de diseo ideal para la aplicacin.

    El marcado XAML siguiente crea una tabla de una columna y tres filas, con un margen de 10 pxeles, agregando

    un control Grid a HomePage.xaml:

    1. Abra HomePage.xaml.

    2. Agregue el cdigo XAML siguiente entre las etiquetas Page.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 29 de 445

    Agregar controles

    En este paso, se actualiza la interfaz de usuario de la pgina principal para mostrar una lista de personas y los

    usuarios pueden seleccionar el nombre de la persona cuyo informe de gastos desean ver. Para crear esta

    interfaz de usuario, se han agregado los elementos siguientes a HomePage.xaml:

    Un control ListBox (para la lista de personas).

    Un control Label (para el encabezado de la lista).

    Un control Button (para hacer clic con objeto de ver el informe de gastos de la persona que est

    seleccionada en la lista).

    Siga estos pasos para actualizar HomePage.xaml:

    1. Sobrescriba el contenido del archivo HomePage.xaml por el siguiente cdigo XAML.

    Names Mike Lisa John Mary View

    2. Compile y ejecute la aplicacin.

    La imagen siguiente muestra los controles creados por el cdigo de este paso.

    Agregar una imagen y un ttulo

    En este paso, la interfaz de usuario de la pgina principal se actualiza con una imagen adecuada y un ttulo de

    pgina:

    1. Abra HomePage.xaml.

    2. Sobrescriba el contenido del archivo HomePage.xaml por el siguiente cdigo XAML.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 30 de 445

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="ExpenseIt.HomePage" WindowTitle="ExpenseIt" Title="ExpenseIt - Home" WindowWidth="550" WindowHeight="380"> View Expense Report Names Mike Lisa John Mary View

    3. Este cdigo XAML actualiza el control Grid de las formas siguientes:

    Crea una nueva cuadrcula con dos filas.

    Agrega un control DockPanel con los elementos Canvas, Image y Label a la primera fila. El

    control DockPanel incluye las dos columnas de la primera fila que, junto con el elemento Canvas

    acoplado a la izquierda, permite que Label se superponga a Image.

    Utiliza el atributo Source del elemento Image para especificar la imagen de origen, es decir,

    watermark.png.

    Agrega el texto de ttulo "View Expense Report" a Label.

    Utiliza los atributos de los elementos Canvas y Label para configurar su apariencia y su

    tamao.

    Mueve la cuadrcula que originalmente contena HomePage.xaml a la segunda columna de la

    segunda fila de la nueva cuadrcula.

    4. Compile y ejecute la aplicacin.

    En la ilustracin siguiente se muestra el resultado de este paso.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 31 de 445

    Agregar cdigo para controlar los eventos

    1. Abra HomePage.xaml.

    2. Sobrescriba el elemento Button definido en el paso anterior por el cdigo siguiente.

    ... View ...

    Nota:

    El nombre del evento de Button que se va a controlar es Click. El nombre del controlador de eventos definido por el programador es viewButton_Click. El controlador de eventos se registra con el evento Click para el control Button.

    3. Abra el archivo HomePage.xaml.cs que cre en el paso Crear los archivos de cdigo de la aplicacin del

    tutorial.

    4. Sobrescriba el contenido del archivo por el siguiente cdigo. De esta forma, se agrega cdigo para

    controlar el evento Click, que permite navegar hasta el archivo ExpenseReportPage.xaml.

    using System; using System.Windows; using System.Windows.Controls; using System.Windows.Navigation; namespace ExpenseIt { public partial class HomePage : Page { public HomePage() { InitializeComponent(); } private void viewButton_Click(object sender, RoutedEventArgs args) { // View Expense Report ExpenseReportPage expenseReportPage = new ExpenseReportPage(); this.NavigationService.Navigate(expenseReportPage); } } }

    Crear la interfaz de usuario para ExpenseReportPage

    ExpenseReportPage.xaml muestra el informe de gastos de la persona que se seleccion en HomePage.xaml. Las

    actualizaciones siguientes agregan los controles y el diseo que sirven para crear la interfaz de usuario bsica

    de ExpenseReportPage.xaml. Tambin agregan un fondo y colores de relleno a los distintos elementos de la

    interfaz de usuario.

    1. Abra el archivo ExpenseReportPage.xaml y agregue el cdigo siguiente.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 32 de 445

    Expense Report For: Name: Department: Expense Type Amount

    2. Compile y ejecute la aplicacin.

    La imagen siguiente muestra los elementos de la interfaz de usuario agregados a ExpenseReportPage.xaml.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 33 de 445

    Agregar cdigo para aplicar estilo a un control

    Es habitual que todos los elementos del mismo tipo de una interfaz de usuario presenten la misma apariencia.

    La interfaz de usuario utiliza estilos para permitir la reutilizacin de las distintas apariencias en diversos

    elementos. Esta posibilidad de reutilizar los estilos ayuda a simplificar la creacin y la administracin del

    marcado XAML. En este paso se reemplazan por estilos los atributos que se definieron en pasos anteriores para

    los distintos elementos:

    1. Abra el archivo App.xaml creado en el paso Crear los archivos de cdigo de la aplicacin de este

    tutorial.

    2. Sobrescriba el contenido del archivo por el siguiente marcado XAML:

    3. Este marcado XAML agrega los estilos siguientes:

    headerTextStyle: para dar formato al control Label de ttulo de pgina.

    labelStyle: para dar formato a las etiquetas Label.

    listHeaderStyle: para dar formato a los controles Border de encabezado de lista.

    listHeaderTextStyle: para dar formato a los controles Label de encabezado de lista.

    buttonStyle: para dar formato al botn de HomePage.xaml.

    Observe que los estilos son los recursos secundarios del elemento de propiedad Application.Resources. En

    esta ubicacin, los estilos se aplican a todos los elementos de una aplicacin.

    4. Abra HomePage.xaml.

    5. Sobrescriba el contenido del archivo por el siguiente cdigo. En este paso se reemplazan atributos

    especficos de la apariencia de cada elemento por un estilo apropiado.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 34 de 445

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="ExpenseIt.HomePage" WindowTitle="ExpenseIt" Title="ExpenseIt - Home" WindowWidth="550" WindowHeight="380"> View Expense Report Names Mike Lisa John Mary View

    6. Abra ExpenseReportPage.xaml.

    7. Sobrescriba el contenido del archivo por el siguiente cdigo.

    Expense Report For:

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 35 de 445

    Name: Department: Expense Type Amount

    8. Compile y ejecute la aplicacin. Despus de agregar el marcado XAML de este paso, la aplicacin

    presenta la misma apariencia que tena antes de actualizarla con los estilos.

    Enlazar datos a un control.

    En este paso se crean datos XML que se enlazan a varios controles:

    1. Abra HomePage.xaml.

    2. Sobrescriba el contenido del archivo por el siguiente marcado XAML.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 36 de 445

    View Expense Report Names View

    3. Observe que los datos se crean como un recurso Grid.

    Conectar los datos a los controles

    En este paso, escribir el cdigo que recupera el elemento actual que est seleccionado en la lista de personas

    de HomePage y pasa su referencia al constructor de ExpenseReportPage durante la creacin de instancias.

    ExpenseReportPage establece su contexto de datos con el elemento que se pasa, que es el elemento con el que

    se enlazarn los controles definidos en ExpenseReportPage.xaml.

    1. Abra HomePage.xaml.cs.

    2. Sobrescriba el contenido del archivo por el siguiente cdigo.

    using System; using System.Windows; using System.Windows.Controls; using System.Windows.Navigation; namespace ExpenseIt { public partial class HomePage : Page { public HomePage() { InitializeComponent(); } private void viewButton_Click(object sender, RoutedEventArgs args) { // Create a new expense report page and pass it the // selected person by using the non-default constructor. ExpenseReportPage expenseReportPage = new ExpenseReportPage(this.peopleListBox.SelectedItem); // Navigate to the expense report page, this.NavigationService.Navigate(expenseReportPage); } } }

    3. Abra ExpenseReportPage.xaml.cs.

    4. Sobrescriba el contenido del archivo por el siguiente cdigo.

    using System;

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 37 de 445

    using System.Windows; using System.Windows.Controls; using System.Windows.Navigation; namespace ExpenseIt { public partial class ExpenseReportPage : Page { public ExpenseReportPage(object data) { InitializeComponent(); // Bind to expense report data. this.DataContext = data; } } }

    Agregar estilo a los datos con plantillas de datos

    En este paso, actualizar la interfaz de usuario para cada elemento de las listas enlazadas a datos utilizando las

    plantillas de datos:

    1. Abra ExpenseReportPage.xaml.

    2. Sobrescriba el contenido del archivo por el siguiente cdigo.

    Expense Report For: Name: Department:

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 38 de 445

    Expense Type Amount

    3. Compile y ejecute la aplicacin.

    Observe que las plantillas de datos estn definidas como recursos Grid.

    En las dos ilustraciones siguientes se muestran las dos pginas de la aplicacin ExpenseIt con los controles, el

    diseo, los estilos, el enlace de datos y las plantillas de datos aplicadas:

    1.3. Lo Nuevo en Windows Presentation Foundation Versin 3.5

    En este tema se explican brevemente las principales diferencias entre las versiones 3.0 y 3.5 de Windows

    Presentation Foundation (WPF).

    Compatibilidad con la versin 3.0

    Compatibilidad con versiones anteriores y posteriores

    Una aplicacin generada con WPF 3.0 se ejecutar en el motor de tiempo de ejecucin de WPF 3.5.

    Una aplicacin generada con WPF 3.5 se ejecutar en el motor de tiempo de ejecucin de la versin 3.0 si la

    aplicacin utiliza nicamente las caractersticas disponibles en WPF 3.0.

    WPF 3.5 define un nuevo espacio de nombres XML, http://schemas.microsoft.com/netfx/2007/xaml/presentation. Al

    generar una aplicacin mediante WPF 3.5, puede utilizar este espacio de nombres o el espacio de nombres

    definido en WPF 3.0.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 39 de 445

    Usar como destino un motor de tiempo de ejecucin concreto

    Las aplicaciones generadas con WPF 3.0 pueden destinarse a cualquier versin del marco de trabajo igual o

    posterior a la versin en la que se generaron originalmente.

    Aplicaciones

    Se han realizado las mejoras siguientes en el modelo de aplicacin:

    Compatibilidad completa con complementos para admitir los complementos visuales y no visuales de

    aplicaciones independientes y Aplicaciones del explorador XAML (XBAPs).

    Las XBAPs se pueden ejecutar ahora en Firefox.

    Las cookies se pueden compartir entre las XBAPs y aplicaciones web del mismo sitio de origen.

    Mejora de la experiencia de XAML IntelliSense para una mayor productividad.

    Compatibilidad de localizacin expandida.

    Complementos visuales y no visuales en WPF

    Una aplicacin extensible expone la funcionalidad de modo que permite a otras aplicaciones integrarse con su

    funcionalidad y extenderla. Los complementos son una manera comn para que las aplicaciones expongan su

    extensibilidad. En .NET Framework, un complemento suele ser un ensamblado empaquetado como una

    biblioteca de vnculos dinmicos (.dll). La aplicacin host carga dinmicamente el complemento en tiempo de

    ejecucin para usar y extender los servicios que expone el host. El host y el complemento interactan entre s

    mediante un contrato conocido, que normalmente es una interfaz comn publicada por la aplicacin host.

    Cuando una aplicacin admite complementos, los desarrolladores propios y los de otros fabricantes pueden

    crear complementos para ella. Hay muchos ejemplos de estos tipos de aplicacin, entre ellos Office, Visual

    Studio y Microsoft Windows Media Player. Por ejemplo, la compatibilidad con complementos de Microsoft

    Windows Media Player permite que otros fabricantes creen descodificadores de DVD y codificadores de MP3.

    .NET Framework implementa los bloques de construccin que permiten que las aplicaciones admitan

    complementos. Sin embargo, el tiempo y la complejidad necesarios para generar esa compatibilidad pueden ser

    costosos, teniendo en cuenta que un diseo de complemento robusto debe ocuparse de lo siguiente:

    Deteccin: bsqueda de complementos que se adhieran a los contratos admitidos por las aplicaciones

    host.

    Activacin: carga, ejecucin y establecimiento de la comunicacin con los complementos.

    Aislamiento: uso de dominios de aplicacin o procesos para establecer lmites de aislamiento que

    protejan las aplicaciones frente a posibles problemas de seguridad y ejecucin con los complementos.

    Comunicacin: los complementos y las aplicaciones host deben poder comunicarse entre s ms all de

    los lmites de aislamiento llamando a mtodos y pasando datos.

    Administracin de la duracin: carga y descarga de los dominios de aplicacin y procesos de una

    manera limpia y predecible.

    Control de versiones: garanta de que las aplicaciones host y los complementos puedan continuar

    comunicndose cuando se creen nuevas versiones de cualquiera de ellos.

    En lugar de exigirle que resuelva estos problemas, .NET Framework incluye ahora un conjunto de tipos,

    ubicados en el espacio de nombres System.AddIn, que se conocen como el "modelo de complementos". El

    modelo de complementos de .NET Framework proporciona funcionalidad para cada uno de los comportamientos

    de complemento comunes que se han mencionado anteriormente.

    En algunos escenarios, sin embargo, tambin puede ser conveniente permitir que los complementos se integren

    con las UIs de la aplicacin host y las extiendan. WPF extiende el modelo de complementos de .NET Framework

    para permitir esta compatibilidad, que se genera en torno a un objeto FrameworkElement propiedad de un

    complemento en las UIs de una aplicacin host. Esto permite a los desarrolladores de WPF crear aplicaciones

    compatibles con los siguientes escenarios comunes:

    Aplicaciones de estilo Messenger que proporcionen servicios adicionales con complementos afines de

    otros fabricantes.

  • Manual de Windows Presentation Foundation

    MCT: Luis Dueas Pag 40 de 445

    Aplicaciones de juegos diseadas para hospedar juegos de otros fabricantes.

    Aplicaciones lectoras de contenido que hospeden anuncios.

    Aplicaciones mashup que hospeden mdulos arbitrarios; por ejemplo, Windows Sidebar.

    Por ltimo, los complementos de WPF pueden ser hospedados tanto por aplicaciones independientes como por

    XBAPs.

    Compatibilidad con Firefox para aplicaciones XBAP

    Un complemento para WPF 3.5 permite ejecutar XBAPs desde Firefox 2.0. Esta caracte