CEBALLOS SIERRA, FRANCISCO JAVIER
PRÓLOGO
Para quién es este libro
Cómo está organizado el libro
Qué se necesita para utilizar este libro
Sobre los ejemplos del libro
Agradecimientos
CAPÍTULO 1. APLICACIÓN WPF
PROGRAMANDO EN WINDOWS
BIBLIOTECA WPF
ESTRUCTURA DE UNA APLICACIÓN
XAML
¿Por qué XAML?
Código subyacente
INICIO DE LA APLICACIÓN
COMPILAR Y EJECUTAR LA APLICACIÓN
DISEÑO DE LA INTERFAZ GRÁFICA
Información básica sobre XAML
Espacios de nombres XML
Propiedades como atributos
Propiedades como elementos
Propiedades de contenido
Extensiones de marcado
Propiedades asociadas
Propiedades de dependencia
Crear un elemento
Controles más comunes
Añadir una etiqueta y editar sus propiedades
Añadir un botón de pulsación y editar sus propiedades
Añadir una descripción abreviada a un elemento
Paneles de diseño
Canvas
StackPanel
WrapPanel
DockPanel
Grid
MANEJO DE EVENTOS
Asignar manejadores de eventos a un objeto
EVENTOS ADJUNTOS
INYECTAR CÓDIGO XAML DURANTE LA EJECUCIÓN
CICLO DE VIDA DE UNA VENTANA
PROPIEDADES BÁSICAS DE LA VENTANA
Administración de la duración
Administración de ventanas
Apariencia y comportamiento
CONFIGURACIÓN DE UNA APLICACIÓN
RECURSOS DE UNA APLICACIÓN
ATRIBUTOS GLOBALES DE UNA APLICACIÓN
CICLO DE VIDA DE UNA APLICACIÓN
Permitir una sola instancia de la aplicación
Cómo se genera un evento
Especificar cuándo se cerrará la aplicación
Pantalla de presentación
Argumentos en la línea de órdenes
Acceso a la aplicación actual
RESUMEN
EJERCICIOS PROPUESTOS
CAPÍTULO 2. INTRODUCCIÓN A WPF
CLASES WPF
ETIQUETAS, CAJAS DE TEXTO Y BOTONES
Desarrollo de la aplicación
Objetos
Eventos
Pasos a seguir durante el desarrollo
El formulario, los controles y sus propiedades
Tecla de acceso
Botón predeterminado
Propiedades comunes
EVENTOS ENRUTADOS
¿Cómo se definen?
Responder a los eventos
Eventos relacionados con el teclado
Eventos relacionados con el foco
Seleccionar el texto de una caja de texto
Eventos relacionados con el ratón
INTERCEPTAR LA TECLA PULSADA
Estado del teclado
VALIDACIÓN DE UN CAMPO DE TEXTO
ENLACE DE DATOS
Enlace de datos sin el motor de WPF
Notificar cuándo cambia una propiedad
Enlace de datos con el motor de WPF
La clase Binding
Contexto de datos
Crear un enlace
Origen de datos implícito
Origen de datos explícito
Enlaces con otros controles
Conversores
Validación de datos
Regla ExceptionValidationRule
Regla DataErrorValidationRule
Información del enlace
Regla de validación personalizada
Fuentes relativas
ESTILOS Y PLANTILLAS
Estilos
Vincular controladores de eventos
Desencadenadores
Plantillas
Plantillas de control
Plantillas de datos
RECURSOS
Recursos creados mediante código
Recursos del sistema
TEMAS Y MÁSCARAS
RESUMEN
EJERCICIOS PROPUESTOS
CAPÍTULO 3. MENÚS Y BARRAS DE HERRAMIENTAS
ARQUITECTURA DE UNA BARRA DE MENÚS
DISEÑO DE UNA BARRA DE MENÚS
Crear una barra de menús
Controlador de un elemento de un menú
Aceleradores y nemónicos
ÓRDENES ENRUTADAS
Vincular una orden enrutada con un control
Modelo de una orden enrutada
Cómo se ejecuta una orden enrutada
Órdenes enrutadas personalizadas
Aceleradores de teclado
Información adicional en las órdenes enrutadas
¿Dónde se aplica la orden?
Utilizar parámetros
ICommand versus RoutedCommand
DETALLES DE UN ELEMENTO DE UN MENÚ
MENÚS CONTEXTUALES
BARRA DE HERRAMIENTAS
Diseño de una barra de herramientas
Contenedor de barras de herramientas
BARRA DE ESTADO
Diseño de una barra de estado
DESARROLLO DE UN EDITOR DE TEXTOS
Caja de texto multilínea
Diseño del editor
El portapapeles
Clase Clipboard
Manipular la selección del texto
Diseño de la barra de menús
Diseño de la barra de herramientas
Asignar a un elemento de la interfaz la tarea a realizar
Archivo - Salir
Editar - Cortar
Editar - Copiar
Editar - Pegar
Opciones - Fuente
Opciones - Tamaño
Ayuda - Acerca de
Eventos comunes a todos los elementos WPF
Habilitar o inhabilitar los elementos de un menú
Marcar el elemento seleccionado de un menú
Deshacer y rehacer
Recordar las ediciones reversibles
Añadir a la interfaz la orden Deshacer
Añadir a la interfaz la orden Rehacer
Menú contextual
Asociar un icono a la aplicación
MENÚS DINÁMICOS
RESUMEN
CAPÍTULO 4. CONTROLES Y CAJAS DE DIÁLOGO
CAJAS DE DIÁLOGO MODALES Y NO MODALES
CAJAS DE MENSAJE
CAJAS DE DIÁLOGO PERSONALIZADAS
Crear una caja de diálogo
Mostrar una caja de diálogo
Gestionar los botones Aceptar y Cancelar
Introducción de datos y recuperación de los mismos
DIÁLOGO ACERCA DE
VENTANA PROPIETARIA
OTROS CONTROLES WPF
Casillas de verificación
Botones de opción
GroupBox y Expander
Listas simples
Diseñar la lista
Iniciar la lista
Acceder a los elementos seleccionados
Colección de elementos de una lista
Lista de elementos de tipo CheckBox
Listas desplegables
Diseñar la lista
Iniciar la lista
Acceder al elemento seleccionado
Colección de elementos de una lista desplegable
Controles de rango definido
ScrollBar
Slider
ProgressBar
Visor con barras de desplazamiento
Control con pestañas
Gestión de fechas
ListView
TreeView
Guardar el documento XML
Recargar el documento XML
Expandir o contraer los nodos
DataGrid
Columnas del DataGrid
Inmovilizar columnas
Filas del DataGrid
Detalles de las filas
CAJAS DE DIÁLOGO ESTÁNDAR
Cajas de diálogo Abrir y Guardar
Cajas de diálogo Windows Forms estándar
Caja de diálogo Imprimir
CONTROLES DE DOCUMENTOS WPF
Documentos dinámicos
Elementos Block
Elementos Inline
Paragraph y Run
Interactuando con los elementos mediante programación
Acceso a documentos en un fichero
Editar un documento
Imprimir un documento
TEMPORIZADORES Y MODELO DE SUBPROCESOS
Timer
Resolución del temporizador
DispatcherTimer
RESUMEN
EJERCICIOS PROPUESTOS
CAPÍTULO 5. ENLACE DE DATOS EN WPF
ASPECTOS BÁSICOS
ENLACE A COLECCIONES DE OBJETOS
Cómo implementar colecciones
Vistas de colección
PLANTILLAS DE DATOS
Definir una plantilla de datos
Mejorar la presentación
Utilizar desencadenadores para aplicar valores de propiedad
XML COMO FUENTE DE DATOS
Datos jerárquicos
Islas de datos
Soporte .Net para trabajar con XML
Obtener la vista
Elemento actual
Navegar
Ordenar
Filtrar
Agrupar
Fuente de datos XML sin el proveedor
Vinculación maestro-detalle
OBJETOS COMO FUENTE DE DATOS
Enlace a una colección de objetos
Vistas de colección de objetos
Obtener la vista
Elemento actual
Navegar
Ordenar
Filtrar
Agrupar
Insertar y borrar elementos de la colección
Vinculación maestro-detalle
Proveedor de datos de objetos
Virtualización
Datos introducidos por el usuario
Solicitar datos al usuario
Validación
Visualización de los errores de validación
Regla de validación personalizada
Permanecer en la caja de diálogo si hay errores
Grupos de enlaces
DataGrid
Columnas del DataGrid
Inmovilizar columnas
Filas del DataGrid
Selección de celdas
Detalles de las filas
Filtrado, agrupación y ordenación
Validación
RESUMEN
CAPÍTULO 6. ACCESO A UNA BASE DE DATOS
SQL
Crear una base de datos
Crear una tabla
Escribir datos en la tabla
Modificar datos de una tabla
Borrar registros de una tabla
Seleccionar datos de una tabla
Crear una base de datos
Base de datos Microsoft Access
Base de datos Microsoft SQL Server
ADO.NET
Componentes de ADO.NET
Conjunto de datos
Proveedor de datos
Objeto conexión
Objeto orden
Objeto lector de datos
Adaptador de datos
Modos de conexión
Probando una conexión
Servicio de conexiones
ACCESO CONECTADO A BASE DE DATOS
ATAQUES DE INYECCIÓN DE CÓDIGO SQL
Órdenes parametrizadas
Procedimientos almacenados
TRANSACCIONES
Transacción implícita TransactionScope
Transacciones explícitas
CONSTRUIR COMPONENTES DE ACCESO A DATOS
Capa de presentación
Operaciones contra la base de datos
Objetos de negocio
Capa de acceso a datos
Capa de lógica de negocio
Lógica de interacción con la capa de presentación
Desacoplar la IU del resto de la aplicación
Adaptar la colección de objetos
Capa de lógica de negocio
Lógica de interacción con la capa de presentación
Validación
ACCESO DESCONECTADO A BASE DE DATOS
Crear la base de datos
Crear un proyecto WPF
Conectarse a la base de datos Sql Server
Crear la capa de acceso a datos
Capa de lógica de negocio
Lógica de interacción con la capa de presentación
Actualizaciones
Clase DataView
RESUMEN
CAPÍTULO 7. LINQ
RECURSOS DEL LENGUAJE COMPATIBLES CON LINQ
Declaración implícita de variables locales
Matrices de tipos definidos de forma implícita
Tipos anónimos
Propiedades auto-implementadas
Iniciadores de objetos y colecciones
Métodos extensores
Expresiones lambda
El delegado Func
Operadores de consulta
Árboles de expresiones lambda
EXPRESIONES DE CONSULTA
Compilación de una expresión de consulta
Sintaxis de las expresiones de consulta
Cláusula group
Productos cartesianos
Cláusula join
Cláusula into
Cláusula let
PROVEEDORES DE LINQ
ENTITY FRAMEWORK
MARCO DE ENTIDADES DE ADO.NET
Consultar un modelo de objetos
ACCESO A UNA BASE DE DATOS
Conectarse a la base de datos
Generar el modelo de entidades
Las clases de entidad y el contexto de objetos
Propiedades de navegación
Mostrar datos en una interfaz gráfica
Una aplicación con interfaz gráfica
Vincular controles con el origen de datos
Filtros
Contextos de corta duración
REALIZAR CAMBIOS EN LOS DATOS
Modificar filas en la base de datos
Insertar filas en la base de datos
Borrar filas en la base de datos
Problemas de concurrencia
El seguimiento de cambios
EJERCICIOS RESUELTOS
RESUMEN
EJERCICIOS PROPUESTOS
CAPÍTULO 8. NAVEGACIÓN DE TIPO WEB
WPF, XBAP y Silverlight
NAVEGACIÓN
Crear la base de datos
Crear el proyecto
NavigationWindow
Page
Añadir páginas a la aplicación
Diseño de la interfaz gráfica
Lógica de negocio
Pasar datos entre páginas
Duración y diario de las páginas
Hyperlinks
Frame
Funciones de página
Diseño
Lógica de negocio
APLICACIÓN XBAP
Publicar la aplicación
Seguridad
ACCESO A UNA BASE DE DATOS DESDE UNA XBAP
Crear la base de datos
Conectarse a la base de datos
Generar el modelo de entidades
Interfaz gráfica
Vincular controles con el origen de datos
Controles de usuario
Modificar registros
Guardar los cambios realizados
Añadir un nuevo registro
Borrar un registro
EL CONTROL WEBBROWSER
RESUMEN
CAPÍTULO 9. SILVERLIGHT
ARQUITECTURA
CREAR UNA APLICACIÓN SILVERLIGHT
Arquitectura de la aplicación Silverlight
Compilación de la aplicación Silverlight
Página de entrada
DISEÑAR UNA PÁGINA SILVERLIGHT
Controles Silverlight
Redistribuir el espacio de los elementos de un Grid
Texto estático
Imágenes
Controles de contenido
Atributos de anotación de datos
Diseño de la interfaz
Contexto de datos
TextBox
DescriptionViewer
ValidationSummary
Label
Validación de los datos
Origen de los datos
Controles de elementos
Controles de texto y elementos de texto
Controles de rango definido
Controles para gestionar fechas
Degradados
Ventanas y cajas de diálogo
Popup
ChildWindow
GRÁFICOS, ANIMACIÓN Y MULTIMEDIA
Gráficos
Transformaciones
Animaciones
Audio y vídeo
NAVEGACIÓN
Navegación personalizada
Navegación de Silverlight
Frame
Administrador de identificadores de recursos
Navegación externa
Extender el sistema de navegación
Compatibilidad de ejecución fuera del explorador
Plantilla aplicación de navegación de Silverlight
ACCESO A DATOS
Acceso a los datos de una colección
Crear la base de datos
Crear una aplicación Silverlight
Vincular controles con el origen de datos
Paginación controlada
Paginación personalizada
Filtrar los registros de la colección
Trabajar con imágenes
Cargar una nueva imagen
Guardar los cambios realizados
Añadir un nuevo registro
Borrar un registro
PUBLICAR LA APLICACIÓN
RESUMEN
CAPÍTULO 10. SERVICIOS WCF
MODELO DE PROGRAMACIÓN DE WCF
Implementar un servicio WCF
Definir un contrato
Implementar un cliente WCF
Configuración del cliente
Obtener acceso al servicio WCF
Comunicación entre dominios
Publicar la aplicación
SERVICIOS WCF HABILITADOS PARA SILVERLIGHT
Crear un servicio WCF habilitado para Silverlight
Implementar un cliente WCF
Añadir una referencia al servicio
Publicar la aplicación
SERVICIOS WEB Y LINQ
Arquitectura de N capas lógicas y N niveles físicos
Crear la base de datos
Obtener acceso a la base de datos
Crear el servicio WCF
Cliente Silverlight
Llenar la lista
Mensajes para el usuario
Ordenar la lista
Mostrar datos
Actualizar datos
Actualizar la foto
Agregar datos
Borrar datos
Publicar el servicio WCF y la aplicación Silverlight
RESUMEN
CAPÍTULO 11. AUTENTICACIÓN Y AUTORIZACIÓN
SERVICIOS DE AUTENTICACIÓN
Autenticación de Windows
Autenticación mediante formularios
Clase FormsAuthentication
Autenticación mediante formularios en Silverlight
SERVICIOS DE APLICACIÓN DE ASP.NET
Crear la estructura de la aplicación
Asignar y configurar servicios de aplicación
Crear usuarios
Autenticación
Funciones (roles)
Perfiles
Autorización de ASP.NET
SIMPLIFICAR EL DESARROLLO DE APLICACIONES
Plantilla aplicación de negocios Silverlight
Autenticación, funciones y perfiles
RESUMEN
CAPÍTULO 12. ACCESO A DATOS UTILIZANDO RIA SERVICES
ACCESO A DATOS
Crear y configurar la solución
Mostrar datos utilizando la clase LoadOperation
Generar el modelo de entidades
Agregar un servicio de dominio
LoadOperation
DomainDataSource
Parámetros de consulta
Ordenar, filtrar y agrupar
Paginación
Actualizar la base de datos
Añadir nuevos registros
Borrar registros
RESUMEN
APÉNDICE A. ENTORNO DE DESARROLLO INTEGRADO
MICROSOFT VISUAL STUDIO
Crear un nuevo proyecto
El formulario
Dibujar los controles
Borrar un control
Propiedades de los objetos
Icono de la aplicación
Escribir los controladores de eventos
Guardar la aplicación
Verificar la aplicación
Propiedades del proyecto
Crear soluciones de varios proyectos
Opciones del EDI
Personalizar el EDI
SQL SERVER EXPRESS
SQL SERVER MANAGEMENT STUDIO EXPRESS
EXPLORADOR DE BASES DE DATOS
AÑADIR UN DATASET AL PROYECTO
Esquemas XSD
Base de datos XML
VISUAL WEB DEVELOPER
INSTALACIÓN DE ASP.NET EN WINDOWS
Registro manual de ASP.NET en IIS
APÉNDICE B. CD
ÍNDICE
C# evolucionó a partir del lenguaje C/C++ incorporando numerosas instrucciones, funciones y palabras clave directamente relacionadas con la interfaz gráfica de Windows. Actualmente ofrece capacidades para realizar un diseño completamente orientado a objetos y acceso directo a Microsoft .NET Framework, entorno que proporciona un amplio conjunto de interfaces de programación de aplicaciones para Windows e Internet.Desde la aparición de Visual Studio .NET, entorno de desarrollo que incluye a Visual C#, dicho paquete ha sido revisado y ampliamente modificado, con el único objetivo de ofrecer una herramienta flexible para los desarrolladores de aplicaciones de línea de negocios que crean aplicaciones Windows, Web o móviles. Así, hemos oído hablar de Visual Studio 2002, 2003, 2005, 2008 y de Visual Studio 2010 y .NET Framework 2.0, 3.5 y 4.0.Al mismo tiempo, Microsoft ha publicado una gama de productos denominada Express, de descarga gratuita, que está enfocada a programadores no profesionales. Estos entornos de desarrollo son Visual Basic, Visual C#, Visual C++, Visual Web Developer (para el desarrollo de aplicaciones web) y SQL Server Express, además de un nuevo producto llamado Visual Studio 2010 Express for Windows Phone para el desarrollo de aplicaciones para los dispositivos móviles basados en Windows Phone. Los desarrolladores profesionales podrán elegir también entre las versiones profesionales de Visual Studio, en las que encontrarán herramientas específicas para arquitectos, desarrolladores o probadores, o herramientas de software de ciclo de vida.Visual C# - Interfaces gráficas y aplicaciones para Internet con WPF, WCF y Silverlight es un libro totalmente centrado en las tecnologías WPF, WCF y Silverlight, para aprender a desarrollar aplicaciones WPF y Silverlight utilizando herramientas de diseño rápido como Microsoft Visual Studio 2010 (o en su defecto Visual C# 2010 Express, Visual Web Developer 2010 Express y SQL Server Express), que le permitirá crear aplicaciones cliente Windows tradicionales con interfaces gráficas muy ricas utilizando el código de marcado XAML, utilizando la tecnología de enlace a datos potente y sencilla propuesta por WPF, aplicaciones cliente servidor, aplicaciones para acceso a bases de datos (ADO.NET), acceso a bases de datos utilizando LINQ más Entity Framework, aplicaciones que utilizan un modelo de navegación tipo Web (páginas web), aplicaciones para la Web utilizando la tecnología Silverlight, servicios WCF, y a desarrollar aplicaciones Silverlight de N capas y N niveles, que tienen que acceder a una base de datos a través de servicios WCF.