Professional Documents
Culture Documents
http://www.fjceballos.es
Visual Basic: Interfaces gráficas y aplicaciones para Internet con WPF, WCF y Silverlight.
© Fco. Javier Ceballos Sierra
© De la edición: RA-MA 2012
MARCAS COMERCIALES: las marcas de los productos citados en el contenido de este libro
(sean o no marcas registradas) pertenecen a sus respectivos propietarios. RA-MA no está
asociada a ningún producto o fabricante mencionado en la obra, los datos y los ejemplos
utilizados son ficticios salvo que se indique lo contrario.
Según lo dispuesto en el Código Penal vigente ninguna parte de este libro puede ser
reproducida, grabada en sistema de almacenamiento o transmitida en forma alguna ni
por cualquier procedimiento, ya sea electrónico, mecánico, reprográfico, magnético o
cualquier otro, sin autorización previa y por escrito de RA-MA; su contenido está protegido
por la Ley vigente que establece penas de prisión y/o multas a quienes intencionadamente,
reprodujeren o plagiaren, en todo o en parte, una obra literaria, artística o científica.
Editado por:
RA-MA Editorial
C/ Jarama, 3A, polígono industrial Igarsa
28860 PARACUELLOS DEL JARAMA, Madrid
Teléfono: 91 658 42 80
Telefax: 91 662 81 39
Correo electrónico: editorial@ra-ma.com
Internet: www.ra-ma.es y www.ra-ma.com
ISBN: 978-84-9964-204-8
Depósito legal: M-24114-2012
Autoedición: Fco. Javier Ceballos
Filmación e impresión: Closas-Orcoyen, S.L.
Impreso en España
Primera impresión: julio 2012
Si algo puede salir mal, saldrá mal.
Ley de Murphy.
PROGRAMANDO EN WINDOWS................................................................... 3
BIBLIOTECA WPF ............................................................................................ 5
ESTRUCTURA DE UNA APLICACIÓN.......................................................... 6
XAML ............................................................................................................ 8
¿Por qué XAML? ...................................................................................... 10
Código subyacente ......................................................................................... 11
INICIO DE LA APLICACIÓN........................................................................... 12
COMPILAR Y EJECUTAR LA APLICACIÓN ................................................ 15
DISEÑO DE LA INTERFAZ GRÁFICA ........................................................... 17
Información básica sobre XAML................................................................... 17
Espacios de nombres XML ....................................................................... 18
Propiedades como atributos ...................................................................... 19
Propiedades como elementos .................................................................... 20
Propiedades de contenido ......................................................................... 20
Extensiones de marcado ............................................................................ 21
Propiedades asociadas ............................................................................... 23
Propiedades de dependencia ..................................................................... 24
VIII VB: INTERFACES GRÁFICAS Y APLICACIONES PARA INTERNET CON WPF, WCF Y SILVERLIGHT
Visual Basic .NET, después Visual Basic 2005, Visual Basic 2008 y ahora
Visual Basic 2010, cambia la idea de programar de las versiones iniciales. Ahora
se requiere una programación orientada a objetos, lo que obligará al desarrollador
a programar de forma ordenada, con unas reglas metodológicas de programación
análogas a las de otros lenguajes de programación orientados a objetos como C++,
C# o Java por citar algunos de los más utilizados.
XXII VB: INTERFACES GRÁFICAS Y APLICACIONES PARA INTERNET CON WPF, WCF Y SILVERLIGHT
La palabra “Visual” hace referencia, desde el lado del diseño, al método que
se utiliza para crear la interfaz gráfica de usuario si se dispone de la herramienta
adecuada (con Microsoft Visual Studio se utiliza el ratón para arrastrar y colocar
los objetos prefabricados en el lugar deseado dentro de un formulario) y desde el
lado de la ejecución, al aspecto gráfico que toman los objetos cuando se ejecuta el
código que los crea, objetos que formarán la interfaz gráfica que el usuario de la
aplicación utiliza para acceder a los servicios que ésta ofrece. La palabra “Basic”
hace referencia al lenguaje BASIC (Beginners All-Purpose Symbolic Instruction
Code), un lenguaje utilizado por más programadores que ningún otro lenguaje en
la historia de la informática. Visual Basic ha evolucionado a partir del lenguaje
BASIC original y ahora está soportado por una biblioteca orientada a objetos di-
rectamente relacionada con la interfaz gráfica de Windows. Y “NET” hace refe-
rencia al ámbito donde operarán nuestras aplicaciones webs (Network - red).
Agradecimientos
He recibido ayuda de algunas personas durante la preparación de este libro, y por
ello les estoy francamente agradecido. También, deseo expresar mi agradecimien-
to a Microsoft Ibérica por poner a mi disposición, en particular, y de todos los lec-
tores, en general, el software que el estudio de esta obra requiere.
ENTORNO DE DESARROLLO
INTEGRADO
Se puede desarrollar una aplicación que muestre una interfaz gráfica utilizando
como herramientas Microsoft Framework SDK (proporciona, entre otras cosas, la
biblioteca de clases .NET y el compilador de Visual Basic) y un simple editor de
texto, o bien utilizando un entorno de desarrollo integrado (EDI). En el primer ca-
so hay que escribir el código fuente línea a línea, para después, desde la línea de
órdenes, compilarlo, ejecutarlo y depurarlo. Lógicamente, escribir todo el código
necesario para crear la interfaz gráfica de la aplicación es una tarea repetitiva que,
de poder mecanizarse, ahorraría mucho tiempo en la implementación de una apli-
cación y permitiría centrarse más y mejor en resolver los problemas relativos a su
lógica y no a su aspecto. Justamente esto es lo nuevo que aporta Visual Studio o,
en su defecto, las versiones de Visual Basic Express y Visual Web Developer Ex-
press.
res de las propiedades de cada uno de los controles. Todo lo expuesto lo realiza-
remos sin tener que escribir ni una sola línea de código. Después, un editor de có-
digo inteligente nos ayudará a escribir el código necesario y detectará los errores
sintácticos que introduzcamos, y un depurador nos ayudará a poner a punto nues-
tra aplicación cuando lo necesitemos.
¿Cuáles son los siguientes pasos para desarrollar una aplicación WPF? En ge-
neral, para construir una aplicación de este tipo con Visual Studio, siga los pasos
indicados a continuación:
Así mismo, en su parte superior, muestra una barra de botones que permiten
ver el código, el diseñador de formularios, la ventana de propiedades, etc. Por
ejemplo, si estamos viendo el diseñador de formularios y hacemos clic en el botón
Ver código, la página de diseño será sustituida por el editor de código, como se
puede observar en la figura siguiente:
860 VB: INTERFACES GRÁFICAS Y APLICACIONES PARA INTERNET CON WPF, WCF Y SILVERLIGHT
El formulario
El formulario, objeto de la clase Window (una ventana), es el plano de fondo para
los controles. Después de crear un nuevo proyecto, la página de diseño muestra
uno como el de la figura siguiente. Lo que ve en la figura es el aspecto gráfico de
un objeto de la clase MainWindow. Para modificar su tamaño ponga el cursor del
ratón sobre alguno de los lados del cuadrado que lo rodea y arrastre en el sentido
deseado.
862 VB: INTERFACES GRÁFICAS Y APLICACIONES PARA INTERNET CON WPF, WCF Y SILVERLIGHT
Si ahora ejecutamos esta aplicación, para lo cual podemos pulsar las teclas
Ctrl+F5, o bien elegir la orden correspondiente del menú Depurar, aparecerá so-
bre la pantalla el formulario (un objeto ventana), con el tamaño asignado, y po-
dremos actuar sobre cualquiera de sus controles, o bien sobre las órdenes del
menú de control, para minimizarlo, maximizarlo, moverlo, ajustar su tamaño, etc.
Ésta es la parte que el diseñador de Visual Studio realiza por nosotros y para no-
sotros; pruébelo. Finalmente, para cerrar la ejecución de la aplicación disponemos
de varias posibilidades:
Label. Una etiqueta permite mostrar un texto de una o más líneas que no pue-
de ser modificado por el usuario. Son útiles para dar instrucciones al usuario.
Button. Un botón de pulsación normalmente tendrá asociada una orden con él.
Esta orden se ejecutará cuando el usuario haga clic sobre el botón.
TextBox. Una caja de texto es un área dentro del formulario en la que el usua-
rio puede escribir o visualizar texto.
DataGrid. Proporciona una tabla para visualizar los datos de un origen de da-
tos de una forma personalizada.
ListBox. El control lista fija (lista desplegada) contiene una lista de elementos
de la que el usuario puede seleccionar uno o varios.
ComboBox. El control lista desplegable combina una caja de texto y una lista
desplegable. Permite al usuario escribir lo que desea seleccionar o elegir un ele-
mento de la lista.
ListView. El control vista de lista muestra una colección de elementos que se
pueden visualizar mediante una de varias vistas distintas.
TreeView. Representa un control que muestra datos jerárquicos en una estruc-
tura de árbol con nodos que se pueden expandir y contraer.
Propiedad Name.
Borrar un control
Para borrar un control, primero se selecciona haciendo clic sobre él y, a continua-
ción, se pulsa la tecla Supr (Del). Para borrar dos o más controles, primero se se-
leccionan haciendo clic sobre cada uno de ellos, al mismo tiempo que se mantiene
pulsada la tecla Ctrl, y después se pulsa Supr.
Cada propiedad de un objeto tiene un valor por defecto que puede ser modifi-
cado in situ si se desea. Por ejemplo, la propiedad Title del formulario del ejem-
plo que nos ocupa tiene el valor MainWindow.
Para cambiar el valor de una propiedad de un objeto, siga los pasos indicados
a continuación:
1. Seleccione el objeto. Para ello, haga clic sobre el objeto o pulse sucesivamen-
te la tecla Tab hasta que esté seleccionado (el control seleccionado aparecerá
rodeado por un rectángulo modificador de tamaño).
Siguiendo con nuestro ejemplo, vamos a cambiar el título del formulario. Para
ello, seleccione el formulario y a continuación la propiedad Title en la página de
propiedades. Después, sobrescriba el texto “MainWindow” con el texto “Saludo”.
El paso siguiente será añadir un botón. Para ello, hacemos clic sobre la he-
rramienta Button de la caja de herramientas y arrastramos el botón sobre el formu-
lario. Modificamos sus propiedades y asignamos a Content el valor Haga clic
aquí, y a Name, el valor btSaludo. Después, movemos el botón y ajustamos su
tamaño para conseguir el diseño que observamos en la figura siguiente.
Icono de la aplicación
Todos los formularios visualizan un icono en la esquina superior izquierda que
generalmente ilustra la finalidad de la aplicación y que también aparece cuando se
minimiza el formulario. Por omisión, Visual Studio utiliza un icono genérico.
Una vez que hemos creado la interfaz o medio de comunicación entre la apli-
cación y el usuario, tenemos que escribir los métodos para controlar, de cada uno
de los objetos, aquellos eventos que necesitemos manipular.
del objeto o del objeto padre. Por ejemplo, el método que responda al evento
Click de un botón pertenecerá a la interfaz de su ventana padre, esto es, a su con-
tenedor.
¿Dónde podemos ver la lista de los eventos a los que puede responder un ob-
jeto de nuestra aplicación? En la ventana de propiedades.
End Sub
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/.../presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Saludo" Height="200" Width="300">
<Grid>
<Label Name="etSaludo" Content="etiqueta" FontSize="14"
Height="28" Margin="80,31,0,0" Width="118"
HorizontalAlignment="Left" VerticalAlignment="Top"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center" />
<Button Name="btSaludo" Content="Haga clic aquí"
Height="23" Width="118" Margin="80,96,0,0"
HorizontalAlignment="Left" VerticalAlignment="Top"
Click="btSaludo_Click" />
</Grid>
</Window>
y el método btSaludo_Click que responderá a ese evento Click cada vez que se
genere (fichero MainWindow.xaml.vb):
El primer parámetro del método anterior hace referencia al objeto que generó
el evento y el segundo contiene datos relacionados con el evento.
Una vez añadido el controlador para el evento Click del botón btSaludo,
¿cómo lo completamos? Lo que deseábamos era que la etiqueta mostrara el men-
saje “¡¡¡Hola mundo!!!” cuando el usuario hiciera clic en el botón. Según esto,
complete este controlador así:
Además del evento Click, hay otros eventos asociados con un botón de pulsa-
ción, según se puede observar en la figura anterior.
Imports System
Imports System.Xaml
Imports System.Windows.Controls
Guardar la aplicación
Una vez finalizada la aplicación, se debe guardar en el disco para que pueda tener
continuidad; por ejemplo, por si más tarde se quiere modificar. Esta operación
puede ser que se realice automáticamente cuando se compila o se ejecuta la apli-
cación y si no, puede requerir guardar la aplicación en cualquier instante ejecu-
tando la orden Guardar todo del menú Archivo.
No es conveniente que utilice los nombres que Visual Basic asigna por defec-
to, porque pueden ser fácilmente sobrescritos al guardar aplicaciones posteriores.
Verificar la aplicación
Para ver cómo se ejecuta la aplicación y los resultados que produce, hay que se-
leccionar la orden Iniciar sin depurar del menú Depurar o pulsar Ctrl+F5.
del menú Depurar > Ventanas para observar los valores que van tomando las va-
riables y expresiones de la aplicación.
Barra de depuración.
874 VB: INTERFACES GRÁFICAS Y APLICACIONES PARA INTERNET CON WPF, WCF Y SILVERLIGHT
¿Qué tenemos que hacer si necesitamos agrupar varios proyectos bajo una
misma solución? Crear una solución vacía y añadir nuevos proyectos a la solución
o añadir nuevos proyectos a la solución existente. Asegúrese de que se va a mos-
trar siempre el nombre de la solución en el explorador de soluciones. Para ello,
ejecute Herramientas > Opciones > Proyectos y Soluciones > Mostrar siempre la
solución.
4. Para activar el proyecto sobre el que va a trabajar, haga clic sobre el nombre
del proyecto utilizando el botón secundario del ratón y del menú contextual
que se visualiza, ejecute la orden Establecer como proyecto de inicio.
Personalizar el EDI
Para personalizar el entorno de desarrollo tiene que ejecutar la orden Herramien-
tas > Personalizar... Desde esta ventana podrá añadir o quitar elementos de un
menú, añadir o quitar una barra de herramientas, añadir o quitar un botón de una
barra de herramientas, etc.
Este producto tiene el mismo motor de base de datos que toda la familia SQL
Server y utiliza el mismo lenguaje SQL, pero tiene ciertas limitaciones como por
ejemplo que sólo puede usar una UCP y un máximo de 1GB de RAM, y las bases
de datos no pueden sobrepasar los 4GB. Otra característica interesante es la movi-
lidad de las bases de datos de un servidor a otro con XCOPY. Con esta utilidad
podemos mover un fichero MDF de una máquina a otra a cualquier ubicación
dentro de su sistema de ficheros, quedando la base de datos movida lista para tra-
bajar. Para utilizar esta base de datos deberemos hacer uso de la opción Attach-
DBFilename en la cadena de conexión, según se muestra a continuación:
caso Sql Server Express permite acceder a ella tratándola como una instancia del
usuario, característica que no está disponible en Sql Server.
Para crear una base de datos utilizando SQL Server Express tiene que hacerlo
desde la línea de órdenes (véase también el capítulo titulado Acceso a una base de
datos). Para iniciar la consola que le permita trabajar contra el motor de base de
datos SQL Server, localice en su instalación el fichero SQLCMD.EXE, cambie a
ese directorio y ejecute la orden:
SQLCMD -S nombre-del-ordenador\SqlExpress
Una vez iniciada la consola, puede escribir órdenes SQL a continuación del
símbolo “>”. Para ejecutar un bloque de sentencias escriba GO. Para salir, escriba
QUIT. Por ejemplo, el guión que muestra la figura siguiente crea la base de datos
bd_telefonos con una tabla telefonos y añade tres filas a la tabla:
APÉNDICE A: ENTORNO DE DESARROLLO INTEGRADO 879
http://www.microsoft.com/downloads/es-es/
Esta aplicación presenta una interfaz gráfica, muy sencilla de utilizar, para
realizar tareas típicas como crear bases de datos, gestionar las tablas de la base,
los procedimientos almacenados, crear usuarios, etc.
Una vez realizada la conexión con el gestor de bases de datos, le será mostra-
da la ventana de la figura siguiente. Seleccione en la lista del panel de la izquierda
la base de datos con la que desea trabajar, haga clic en el botón Nueva consulta de
la barra de herramientas y, después, escriba en el mismo las sentencias SQL que
desee ejecutar. Para ejecutar una sentencia SQL haga clic en el botón Ejecutar de
la barra de herramientas.
APÉNDICE A: ENTORNO DE DESARROLLO INTEGRADO 881
Si está utilizando Visual Basic Express, se visualizará esta otra ventana. Elija
como origen de datos Microsoft SQL Server, escriba el nombre de la base de datos
y haga clic en Aceptar.
Una vez creada la base de datos, el paso siguiente es añadir las tablas. Des-
pliegue el árbol correspondiente a la nueva conexión, haga clic con el botón se-
cundario del ratón sobre el nodo Tablas y agregue una nueva tabla. Después
complete el proceso de creación de la misma.
APÉNDICE A: ENTORNO DE DESARROLLO INTEGRADO 883
También puede agregar nuevos elementos haciendo clic con el botón secun-
dario del ratón sobre la superficie de diseño.
Esquemas XSD
Se pueden crear vistas XML de datos relacionales utilizando el lenguaje de defi-
nición de esquemas XML (XSD). Estas vistas pueden consultarse después utili-
zando consultas XPath (lenguaje de rutas XML).
</xs:schema>
Un esquema XSD con anotaciones que describan la base de datos y las opera-
ciones sobre la misma, puede utilizarlo para consultar la base de datos y devolver
los resultados en forma de documento XML.
APÉNDICE A: ENTORNO DE DESARROLLO INTEGRADO 887
Imports BDNotasAlumnos
...
Dim dt1 As New DataSetBDNotasAlumnos.alumnosDataTable()
Dim t1 As New
DataSetBDNotasAlumnosTableAdapters.alumnosTableAdapter()
t1.Fill(dt1)
dt1.WriteXmlSchema("xsd_alumnos.xml")
dt1.WriteXml("datos_alumnos.xml")
Una vez obtenido el esquema XSD de cada una de las tablas, fusionamos to-
das ellas en un único fichero; por ejemplo en bd_notasAlumnos.xsd:
</xs:element>
<xs:element name="asignaturas">
</xs:element>
<xs:element name="alums_asigs">
888 VB: INTERFACES GRÁFICAS Y APLICACIONES PARA INTERNET CON WPF, WCF Y SILVERLIGHT
</xs:element>
</xs:choice>
</xs:complexType>
</xs:unique>
<xs:unique name="Constraint2" msdata:PrimaryKey="true">
</xs:unique>
<xs:unique name="Constraint3" msdata:PrimaryKey="true">
</xs:unique>
</xs:element>
</xs:schema>
Hacemos lo mismo con los datos de cada una de las tablas; por ejemplo fu-
sionamos los datos en bd_notasAlumnos.xml. Observe que la etiqueta que envuel-
ve todo el documento, bd_notasAlumnos, coincide con la identificación del
esquema XSD.
Imports System.Collections.ObjectModel
End Try
End Function
' ...
End Class
aspnet_regiis.exe -i -enable
atajo, 155 Block, 285
ataques de inyección SQL, 411 BlockUIContainer, 286
atributos de anotación de datos, 621 Boolean?, 220
atributos globales de una aplicación, 48, 224 Border, 26, 61, 324, 616
Attach, 754 borrar datos, 768
AttachDBFilename, 877 borrar objetos, 705
audio, 654 borrar registros en una tabla, 389
autenticación, 777, 819 borrar tabla de la base de datos, 389
de Windows, 779, 816 borrar un control, 866
mediante formularios, 779, 816 borrar un registro, 851
autenticación y autorización, 675 botón de opción, 232, 863
Authenticate, 787 botón de pulsación, 28, 62, 863
AuthenticationService, 790, 793, 800 botón predeterminado, 67
AutoCompleteBox, 631 bucle de mensajes, 4, 304
AutoPlay, 655 Button, 26, 60, 62
autorización, 777, 808 ButtonBase, 60
ayuda dinámica, 858 byte[], 697
B C
BAML, 16 caché, 581
barra de desplazamiento, 2, 251, 864 cadena de conexión, 811
eventos, 254 caja de diálogo
barra de estado, 181 Abrir, 278
barra de herramientas, 177 Color, 281
añadir botón, 178 crear, 217
diseño, 191 Guardar, 280
orientación, 180 Imprimir, 282
barra de menús, 1, 139 modal o no modal, 212
crear, 139 mostrar, 219
diseño, 189 para mostrar un mensaje, 212
barra de progreso, 256 recuperar datos, 221
barra de tareas, botón de la ventana, 42 caja de herramientas, 862
barra de título, 2 caja de texto, 863
base de datos, 887 multilínea, 184
crear, 878, 881 seleccionar el contenido, 79
mover, 877 cajas de diálogo estándar, 278
XML, 821 cajas de diálogo personalizadas, 215
BasedOn, 120 calculadora, 135
BeginEdit, 440 Calendar, 261
BeginInvoke, 304 cambios en los datos, 522
BeginTime, 650 cambios, seguimiento, 535
binary, 746 campos, 385
BinaryExpression, 484 CancelEdit, 440
Binding, 21, 23, 97, 98, 316, 678 CanExecute, 151, 174
BindingExpression, 114 CanExecuteChanged, 152, 173
BindingGroup, 374, 449 CanUndo, 188, 202
BindingListCollectionView, 320 Canvas, 29, 61
Bitmap, 695 capa de acceso a datos, 431
BitmapImage, 695 capa de lógica de negocio, 435
ÍNDICE 897
capa de presentación, 425 RadioButton, 26, 232
desacoplar, 439 RoutedCommand, 146
lógica, 436 SaveFileDialog, 280
CaptureSource, 664 ScrollBar, 26, 251
carpeta virtual, 578 Separator, 139
cascada, operaciones en, 531 Slider, 255
casilla de verificación, 227, 863 TextBlock, 26
CenterOwner, 217 TextBox, 26, 188
cerrar, 2 TextBoxBase, 188
cerrar la aplicación, 52 TextRange, 298
CheckBox, 26, 60, 227, 245 TimeSpan, 307
Checked, 228 UIElement, 57
CheckStateChanged, 232 Validation, 109
Children, 296 Window, 9
ChildWindow, 637 clases, vista, 860
ciclo de vida de una aplicación, 49 Clear, 188, 243
ciclo de vida de una ventana, 41 Click, 4, 76
cifrado, texto, 217 ClientAccessPolicy.xml, 729
cifrar, 783 cliente Silverlight, 756
clase cliente WCF, 720
Application, 13 Clipboard, 187
Binding, 98, 316 Close, 43, 143, 220, 402
Border, 26 Closed, 42
Button, 26 Closing, 42
CheckBox, 26, 227 clr‐namespace, 18, 102
Clipboard, 187 código subyacente, 11
ColorDialog, 281 código Visual Basic, insertar en XAML, 12
ComboBox, 26, 246 colección
ContentElement, 57 añadir, 243
Control, 26 borrar todo, 243
Convert, 236 borrar, 243
DataRow, 397 ConstraintCollection, 397
DataTable, 397 DataColumnCollection, 397
de entidad, 509 DataRelationCollection, 397
de un objeto, determinar, 294 DataRowCollection, 397
Debug, 144 DataTableCollection, 397
Dispatcher, 304 de elementos, 205, 864
FrameworkContentElement, 57 insertar, 243
FrameworkElement, 27, 57 colecciones, 317
GroupBox, 232 CollectionChanged, 354, 444
Label, 26 CollectionView, 319, 332
ListBox, 26, 238 CollectionViewSource, 319, 686
Menu, 139 colocar el control, 802
MenuItem, 139 color, 20, 281
Mouse, 81 Color, propiedad, 282
NavigationWindow, 549 ColorAnimation, 648
ObjectContext, 510 ColorDialog, 281
OpenFileDialog, 279 Column, 33
Page, 551 columnas, 385
ProgressBar, 256 ColumnSpan, 33
898 VB: INTERFACES GRÁFICAS Y APLICACIONES PARA INTERNET CON WPF, WCF Y SILVERLIGHT
ComboBox, 26, 60, 246 controles, 3
ComboBoxItem, 60, 246 controles de contenido, 620
Command, 148, 398, 401 controles de rango definido, 251
CommandBinding, 151 controles WPF, 226
CommandParameter, 163 ControlTemplate, 123
commands, 145 conversor, 104, 695
CommandTarget, 149 conversores intrínsecos, 104
CommitNew, 768 Convert, 77, 104, 236, 695
compilador de marcado de WPF, 11 ConvertBack, 104, 695
Completed, 839 ConverterCulture, 101
componentes de acceso a datos, 424 convertir un entero en una cadena de
comunicación entre dominios, 728 caracteres en una base, 237
concurrencia, 532, 744, 826 convertir una cadena de caracteres en una
ConcurrencyMode, 532 base a un entero, 236
conexión abierta/cerrada, 511 Copy, 188
conexión con la base de datos, 404 Count, 479
conexión, probar, 405 crear una aplicación, 857
configuración de la aplicación, 46 crear una base de datos, 386, 391, 393
configuración del cliente, 724 crear una caja de diálogo, 217
configuración servicio WCF, 741 crear una tabla, 386
ConfigurationManager, 811 CREATE DATABASE, 386
confirmar, 214 CREATE TABLE, 386
conjunto de datos, 396 credentials, 782
Connection, 398 CSDL, 496
ConstantExpression, 484 cuadro combinado, 247
Constraint, 397 Current, 55
ConstraintCollection, 397 CurrentChanged, 692
contenedor, 798 CurrentItem, 333, 350, 692
Content, 27, 550 CurrentSource, 550
ContentControl, 60, 620 Cut, 188
ContentElement, 59
ContentLoader, 675
ContentRendered, 41
D
ContextMenu, 60, 176 Data Mapper, 501
contexto de datos, 99 Data Transfer Object, 425
contexto de dominio, 831 DataAdapter, 398, 453
Load, 832 DataColumn, 397
contexto de objetos, 510 DataColumnCollection, 397
contextos de corta duración, 522 DataContext, 99
contrato, 713 DataContract, 718
contrato de datos, 717 DataErrorValidationRule, 108
contrato de servicio, 714 DataForm, 843
Control, 26, 59 DataGrid, 271, 426, 436, 685
control adornado, 124 colección de objetos, 376
control de usuario, 590 columnas, 378
control PasswordBox, 217 detalles de las filas, 381
control, borrar, 866 eventos, 381
control, mover, 866 filas, 379
controlador de eventos, 37, 72, 74 selección de celdas, 380
añadir, 75 validar, 447
ÍNDICE 899
DataGridRow, 274, 379 Dispatcher, 304
DataMember, 718 DispatcherObject, 58, 304
DataPager, 687, 842 DispatcherTimer, 304, 308
DataReader, 398, 402 DispatcherUnhandledException, 49
DataRelationCollection, 397 DisplayMemberPath, 420
DataRow, 397, 459 Dispose, 409
DataRowCollection, 397, 464 DockPanel, 32, 61
DataSet, 452 documento dinámico, 284
añadir al proyecto, 883 en un fichero, 297
métodos, 452 modificar, 293
DataSourceProvider, 333 navegar, 293
DataTable, 397, 459 documentos dinámicos, 283
DataTableCollection, 397 documentos fijos, 283
DataTemplate, 125, 264, 322 DocumentViewer, 283
DataTrigger, 122 DomainContext, 832
DataView, 462, 467 DomainDataSource, 840
DatePicker, 261 DomainService, 829
datos jerárquicos, 328 DoubleAnimation, 650
DbProviderFactory, 399 DragMove, 44
Deactivated, 41, 49 DROP TABLE, 389
Debug, 144 duración y diario de las páginas, 564
Decorator, 61 DynamicResource, 22, 127
deep link, 670
deep zoom, 664
degradados, 634
E
delegado, 37, 693 EDI, 855
delegado Func, 477 opciones, 876
delegados, 475 personalizar, 877
DELETE, 389 EditingElementStyle, 449
DeleteCommand, 403 editor de textos, 183
Deleted, 397 ejecutar, 16
DeleteObject, 529 ejecutar aplicación, 862
DependencyObject, 40, 58 Elapsed, evento, 304, 305
depuración, 144 ElementName, 98, 103, 316
depurar una aplicación, 872 elemento actual, 350
descripción abreviada, 29 elemento adornado, 124
DescriptionViewer, 625 elemento de un menú, marcar, 202
desencadenadores, 121, 325 eliminar filas, 529
deshacer, 188, 202 Ellipse, 61
deslizador, 255 EndEdit, 441
Detach, 745 enfocar un componente, 77
diálogo Acerca de, 223 enlace, 713
diálogo, introducir datos, 361 a colecciones, 317
diálogo, permanecer o cancelar, 373 a una colección, 345
DialogResult, 220 con otros controles, 103
diccionario de recursos, 127, 130 de datos de WPF, 89
dirección, 713 de datos WPF, 96
directorio virtual, 578 de datos, 315
diseño, 29 de datos, crear, 99
diseño de tipo maestro‐detalle, 339 información, 114
900 VB: INTERFACES GRÁFICAS Y APLICACIONES PARA INTERNET CON WPF, WCF Y SILVERLIGHT
profundo, 670 de la aplicación, 49
TwoWay, 349 de WPF, 71
Entities, 835 del teclado, 74
Entity Client, 497 enrutados, 69
Entity Framework, 495 lista, 870
Entity SQL, 496 suscribirse a, 72
EntityCollection, 511 EventSetter, 120
EntityKey, 536 excepciones, 359
EntityQuery, 835 ExceptionValidationRule, 107, 367
EntityReference, 512 Execute, 174
EntitySet, 536 Executed, 151
entorno de desarrollo integrado, 855 ExecuteNonQuery, 401
Entrar, Aceptar, 218 ExecuteReader, 401
enumeración HorizontalAlignment, 28 Exit, 49
error durante el diseño, 587 explorador de bases de datos, 881
ErrorContent, 111 explorador de soluciones, 858
Errors, 109 expresión de consulta, 480, 484
ErrorTemplate, 109, 124 compilación, 487
Esc, Cancelar, 218 expresiones lambda, 475
escribir datos en una tabla, 388 Expression, 481, 484
espacios de nombres, 15, 872 Extension, 474, 488
declarar en XAML, 102 extensiones de marcado, 21
XAML, 18 extremo, 713, 795
eSQL, 496
esquema del documento, 866
esquema XSD, 886
F
esquemas XML, 886 fecha y hora, 864
estilo, 119 fechas, 260
estilos, 556 fichas, 864
etiqueta, 27, 763 ficheros y documentos dinámicos, 297
evento, 4 Figure, 289
adjunto, 246 filas, 385
Checked, 228 FileInfo, 700
Click, 76 FileName, 280
controlado, 70 FileStream, 700
de propagación, directo y de túnel, 70 Fill, 404
Initialized, 199 Filter, 280, 693
Loaded, 77, 196, 199 FilterDescriptors, 842
LoadingRow, 274 FilterIndex, 280
NavigationFailed, 567 filtrar datos, 693, 842
PropertyChanged, 93 filtrar los elementos de una colección, 352
RowEditEnding, 439 filtro de nombres de fichero, 280
SelectionChanged, 437 filtros, 468
TextChanged, 92 finalizar la ejecución, 16, 862
Unchecked, 228 Finally, 407
Unloaded, 199 FindLogicalNode, 40
Validation.Error, 110 FindName, 40
eventos, 36, 69, 869 FindResource, 102, 128
adjuntos, 38 FixedDocument, 283
de entrada, 70 Floater, 289
ÍNDICE 901
FlowDocument, 285 Group, 489
FlowDocumentPageViewer, 284 Group … By, 479
FlowDocumentReader, 283 GroupBox, 232
FlowDocumentScrollViewer, 284 GroupDescriptors, 842
foco, 61, 77, 218 GroupName, 232
Focus, 77, 86, 236 grupos de aplicaciones, 771
Focusable, 78 guardar una aplicación, 872
FocusedElement, 86
FocusManager, 78, 149
Font..., 27
H
FontFamily, 196 habilitar o inhabilitar los elementos de un
FontSize, 197 menú, 199
Format, 77 Handled, 70, 75, 83
FormatException, 77 Handles, 870
FormsAuthentication, 781, 787 HasError, 109, 373, 376
formularios, 3 HashPasswordForStoringInConfigFile, 783
Frame, 547, 567, 667 HeaderedItemsControl, 60, 328
FrameworkContentElement, 59 Height, 67
FrameworkElement, 27, 40, 59 herramientas, caja, 862
From, 478, 487 Hide, 43
FromByteArray, 698 HierarchicalDataTemplate, 264, 328
FromResource, 699 historial de navegación, 667
fuentes, 195 HorizontalAlignment, 28, 68
fuentes relativas, 118 HorizontalContentAlignment, 28, 68
Func, 477 hospedar aplicaciones WPF, 545
función de un usuario autenticado, 805 Hyperlink, 551, 565
funciones de página, 569 HyperlinkButton, 669, 674
funciones de usuario, 820
I
G
ICommand, 146, 165
GetCustomAttributes, 49 ICommandSource, 149
GetDefaultView, 333 Icon, 44, 175, 204, 869
GetExecutingAssembly, 49 icono de la aplicación, 869
GetHasError, 373 icono, añadir a la aplicación, 204
GetNavigationService, 551 IDataErrorInfo, 108, 112
GetObject, 47 identidad utilizada por el grupo de
GetRolesForCurrentUser, 804 aplicaciones, 771
GetString, 47 IDENTITY, 746
GetWindow, 43 IDisposable, 409
GoBack, 550 IEditableObject, 440
GoForward, 550 IEnumerable, 479, 493
GotFocus, 78 Image, 175, 178, 191
GotKeyboardFocus, 78 ImageBrush, 126
gráficos, 642 imagen, añadir a un botón, 191
Grid, 33, 61, 615 imagen, cargar, 699
Grid.Column, 66 imágenes, 619, 694
Grid.Row, 66 ImageSource, 695
GridSplitter, 35, 615 imprimir, 282
GridView, 262 imprimir un documento dinámico, 300
902 VB: INTERFACES GRÁFICAS Y APLICACIONES PARA INTERNET CON WPF, WCF Y SILVERLIGHT
INavigationContentLoader, 675 IsVisible, 78
información sobre un enlace, 114 it, 500
iniciadores de colecciones, 474 Items, 205
iniciadores de objetos, 473 propiedad, 240
inicio de sesión, 818 ItemsControl, 60
InitialDirectory, 280 ItemsSource, 272, 321
Initialized, 199 ItemsSource, propiedad, 240
Inline, 289 IValueConverter, 104
InlineUIContainer, 290
INotifyCollectionChanged, 354
INotifyPropertyChanged, 93, 317, 349, 678
J
InputBinding, 156, 158 Join, 479, 490
InputGesture, 156, 158 Journal, 565
InputGestureText, 145, 155 JournalOwnership, 671
Insert, 243
INSERT, 388
insertar filas, 526
K
insertar o borrar elementos en una vista, 353 KeepAlive, 551, 564, 601
InsertCommand, 403 Key, 85, 156
interceptar la tecla pulsada, 84 KeyBinding, 155
interfaces de usuario dinámicas, 41 Keyboard, 78, 86
interfaces gráficas, 5 KeyDown, 70, 74
interfaz, 3 KeyGesture, 156, 158
ICommand, 146, 165 KeyUp, 74
IEditableObject, 440
Into, 491
introducir datos, 360 L
Invoke, 304 Label, 26, 60, 61, 625
inyección de código SQL, 411 LargeChange, 251
inyectar código XAML, 38 LayoutMode, 869
IQueryable, 479, 493 Lazy Loading, 501
IsActive, 41, 43 lector de datos, 401
IsCancel, 218 Left, 44
IsCheckable, 175 Let, 492
IsChecked, 175, 228 Line, 61
IsCurrentUserInRole, 804 LinearGradientBrush, 635
IsDefault, 67, 218 líneas de ayuda, 868
IsEditable, 247 LineBreak, 224, 290
IsEnabled, 176, 200 LINQ, 471
IsFocusScope, 150 LINQ to Entities, 496
IsKeyDown, 86 List, 286
IsKeyToggled, 86 lista, 238, 864
IsKeyUp, 86 acceder a sus elementos, 242
isla de datos XML, 331 borrar elemento, 244
IsLoggedIn, 800 de elementos CheckBox, 245
IsMouseDirectlyOver, 81 de los eventos, 870
IsMouseOver, 81 desplegable, 246, 864
IsMuted, 655 añadir elemento, 250
IsReadOnly, 247 borrar elemento, 250
IsThreeState, 228 diseñar, 248
ÍNDICE 903
diseño, 241 controlador de un elemento, 142
elemento seleccionado, 240 de control, 2
selección múltiple, 243 de desbordamiento, 180
ListBox, 26, 60, 238, 320 dinámico, 204
ListBoxItem, 60, 238 emergente, 175
ListCollectionView, 320 señalar elemento, 201
ListView, 262 MenuBase, 60
Load documento dinámico, 300 MenuItem, 60, 139
Loaded, 41, 77, 196, 199 MenuItem.Icon, 175
LoadingRow, 274 menús, 137, 863
LoadOperation, 832 detalles, 175
LoadSize, 842 diseño, 139
LocationChanged, 44 líneas de separación, 142
LogicalTreeHelper, 40 MessageBox, 144, 212
Login, 800 MessageBox.Show, 91
Logout, 801 MessageBoxResult, valor retornado..., 213
LostFocus, 79 metadatos, 564
LostKeyboardFocus, 78 MethodCallExpression, 484
método abreviado, 155
método Main, 13
M método Run, 14
maestro‐detalle, 339, 354 método Shutdown, 14
mage.exe, 581 Métodos del generador de consultas, 497
Main, 13 métodos extensores, 474
MainWindow, 41, 55 Microsoft Access, 400
manejador de eventos, 37 Microsoft.ACE.OLEDB, 401
marcas de tiempo, 745 Microsoft.Jet.OLEDB, 401
marco, 863 Microsoft.Win32, 278
marco de la ventana, 2 Min, 479
Margin, 28, 68 MinHeight, 67
máscaras, 130 minimizar, 2
Matrix, 643 Minimum, 251
MatrixTransform, 646 MinWidth, 67
Max, 479 modal o no modal, 212
MaxDropDownHeight, 247 Mode, 97, 678
MaxHeight, 67 modelo asincrónico, 724
maximizar, 2 modelo de datos, 343
Maximum, 251 modelo de entidades, 496
MaxWidth, 67 modelos de contenido, 62
MediaElement, 654 Model‐View‐ViewModel, 166
MediaEnded, 655 modificadores de tamaño, 866
MediaFailed, 655 modificar datos, 522
MediaOpened, 655 modificar datos en una tabla, 388
MemberExpression, 484 Modified, 397
membership, 796, 781 ModifierKeys, 156
mensaje, mostrar, 144 Modifiers, 86, 156
Menu, 60, 139 mostrar datos, 764
menú, 138 mostrar un mensaje, 144
añadir imagen a un elemento, 175 Mouse, 81
contextual, 175 MouseBinding, 158
904 VB: INTERFACES GRÁFICAS Y APLICACIONES PARA INTERNET CON WPF, WCF Y SILVERLIGHT
MouseDown, 80 ObjectStateManager, 523, 536
MouseEnter, 80 objeto aplicación, referencia, 55
MouseLeave, 81 objetos como orígenes de datos, 343
MouseLeftButtonDown, 662 objetos de negocio, 428
MouseLeftButtonUp, 662 ObservableCollection, eventos, 442
MouseMove, 80 ObservableCollection, InsertItem, 442
MouseUp, 80 OdbcConnection, 399
MoveCurrentToFirst, 691 OdbcDataAdapter, 403
MoveCurrentToNext, 335, 351 OleDbConnection, 399
mover el control, 866 OleDbDataAdapter, 403
MSL, 496 OleDbDataReader, 402
MultiTrigger, 121 OnReturn, 574
Mutex, 52 OnStartup, 52
OpenFile, 280
OpenFileDialog, 279, 700
N OpenRead, 700
navegación operadores de consulta, 478
de fragmento, 567 OperationContract, 714
de Silverlight, 666 OptimisticConcurrencyException, 532
de tipo web, 546 OracleConnection, 399
estructurada, 569 OracleDataAdapter, 403
externa, 674 orden, 403
falla, 567 orden enrutada, 145
historial, 568 información adicional, 159
personalizada de Silverlight, 665 parámetros, 162
navegar por los elementos de una vista, 351 orden parametrizada, 414
Navigate, 550, 564, 668 orden Tab, 61
NavigateUri, 565, 669 ordenación de los datos, 842
Navigating, 670, 807, 822 ordenar una vista de elementos, 352
Navigation, 668, 672 órdenes, 145
NavigationFailed, 671 enrutadas comunes, 146
NavigationService, 547, 551 Order By, 479, 487
NavigationUIVisibility, 568 Orientation, 255
NavigationWindow, 547 origen de datos implícito, 100, 103
nemónico, 67, 144 OriginalSource, 75
N‐Layer architecture, 744, 775 ORM, 495
NotifyOnValidationError, 109 OwnedWindows, 43, 226
NT AUTHORITY\Servicio de Red, 746 Owner, 43, 226
N‐Tier architecture, 744, 775
Nullable(Of Boolean), 220 P
Padding, 69
O Page, 551
Object, 58 duración, 564
ObjectCollection, 243, 249 PagedCollectionView, 686, 763
ObjectContext, 503 PageFunction, 569
ObjectDataProvider, 358 PageSize, 842
ObjectQuery, 497 página de Silverlight, 668
ObjectSet(Of ), 510 paginación, 687, 842
ObjectStateEntry, 523, 536 páginas, pasar datos entre, 563
ÍNDICE 905
Panel, 29, 60 cambió, notificar, 93
paneles de diseño, 29 como atributo, 19
pantalla de presentación, 53 como elemento, 20
Paragraph, 286, 291 Content, 27
Parameter, órdenes enrutadas, 163 de contenido, 20
ParameterExpression, 484 de dependencia, 24, 165
Parameters, 414 Font..., 27
parámetros de consulta, 841 HorizontalContentAlignment, 28
parámetros en órdenes SQL, 414 Icon, 869
pasos, 314 Items, 205
Password, 217 Margin, 28
PasswordBox, 59, 217, 624 Mode, 97
PasswordChar, 217 PropertyChanged, 97, 316
Paste, 188 Resources, 126
Path, 98, 101, 316 StartupUri, 14
patrones de diseño, 501 ToolTip, 29
perfiles, 808, 821 UpdateSourceTrigger, 97
plantilla, 123 Visibility, 207
plantillas de datos, 320 xmlns, 9
pool de conexiones, 407 propiedades
Popup, 636 asociadas, 109
portapapeles, 186 de navegación, 510
posición del ratón, 81 de un objeto, 867
posición inicial de la ventana, 41 del proyecto, 874
Position, 656 HorizontalAlignment y VerticalAlignment, 28
PostgreSql, 400 proveedor de datos, 398
predicado, 693 proveedor de datos de objetos, 358
PresentationHost, 545 proveedor de entidades, 497
PreviewGotKeyboardFocus, 78 proveedor XmlDataProvider, 327
PreviewKeyDown, 70, 74, 85 proveedores de LINQ, 493
PreviewKeyUp, 74 publicar un servicio WCF, 769
PreviewLostKeyboardFocus, 78 publicar una aplicación Silverlight, 730
PreviewMouseDown, 80 Publicar XBAP, 578
PreviewMouseMove, 80 puntero, 862
PreviewMouseUp, 80 punto de inserción, 77
PreviewTextInput, 74 punto final, 713, 795
PRIMARY KEY, 387
Print, 300
PrintDialog, 278, 301
Q
PrintDocument, 283 QueryParameters, 841
PrintVisual, 301
procedimiento almacenado, 415, 427
producto cartesiano, 490
R
ProfileService, 790, 795, 808 RadialGradientBrush, 635
ProgressBar, 60, 256 RadioButton, 26, 60, 232
Property, 25 RangeBase, 60
PropertyChanged, 93, 97, 316 Read, 402
propiedad Rectangle, 61
asociada, 23 recursos, 22, 126
auto‐implementada, 473 creados mediante código, 128
906 VB: INTERFACES GRÁFICAS Y APLICACIONES PARA INTERNET CON WPF, WCF Y SILVERLIGHT
de una aplicación, 47 S
del sistema, 129
Redo, 188 Save documento dinámico, 299
referencias, 859 SaveChanges, 510
reflexión, 49, 618 SaveFileDialog, 280
Refresh, 381, 534 ScaleTransform, 645
registrar usuario, 819 Scroll, 254
registros, 385 ScrollBar, 26, 60, 251
reglas de validación, 107 ScrollIntoView, 319, 335, 351
rehacer, 188 ScrollViewer, 35, 60, 258
rejilla de ayuda, 868 Section, 286
RelativeSource, 23, 118, 451 SecurePassword, 217
reloj, 303 SecureString, 217
despertador, 309, 312 seguimiento de los cambios, 535
digital, 304 seguridad en XBAP, 581
Remove, 243 seleccionar datos de una tabla, 389
RemoveAt, 243 seleccionar el contenido de una caja de texto,
colección, 208 79
RemoveBackEntry, 550 seleccionar un objeto, 867
RemovedItems, 438 Select, 80, 188, 487
RequiresAuthenticationAttribute, 820 SELECT, 389
RequiresRoleAttribute, 820 selectAll, 79
ResizeMode, 44, 217 SelectAll, 188
ResourceDictionary, 127 SelectCommand, 403
ResourceManager, 47 SelectedIndex, 240
Resources, 126 SelectedIndexChanged, 520
RestoreBounds, 44 SelectedItem, 240, 249
Result, 574 SelectedItems, 243
ReturnEventArgs, 574 SelectedText, 80, 188
RIA Services, 813, 825 SelectedValue, 420
RichTextBox, 59, 197, 283, 297 SelectedValuePath, 420
roles, 820 SelectionChanged, 271, 437
RoleService, 790, 795, 804 SelectionLength, 80, 188
RootVisual, 611 SelectionStart, 79, 188
RotateTransform, 646 Selector, 60
RoutedCommand, 146 sentencia Using, 409
RoutedEvent, 69 señalar un elemento de un menú, 201
RoutedEventArgs, 70 separadores, 142
RoutedEventHandler, 37, 73 Separator, 59, 139
RoutedUICommand, 148 seriación/deseriación, 11
Row, 33, 439, 446 ServiceContract, 714
RowChanged, 466 servicio, 711
RowDeleted, 466 de conexiones, 407
RowEditEnding, 439 de dominio, 815, 829, 831
RowFilter, 468 de navegación, 551
RowSpan, 33 de red, 747
RowState, 464 de suscripciones, 796
RowValidationRules, 450 WCF, 712
Run, 4, 14, 224, 290, 291 WCF de funciones, 804
WCF habilitado para Silverlight, 734
ÍNDICE 907
WCF para acceso a datos, 748 SmallChange, 251
servicios de aplicación, 778, 790 SOAP, mensaje, 712
configurar, 793 SolidColorBrush, 649
Servicios de objetos, 498 soluciones y proyectos, 875
servicios webs y LINQ, 743 Sort, 468
SessionEnding, 49 SortDescriptors, 842
SetResourceReference, 129 Source, 75, 98, 316, 550
Setter, 119, 326 Span, 291
Shape, 61 SplashScreen, 53
Show, 43, 212, 215, 226 SQL, 386
ShowActivated, 44 SQL Server, 400, 408, 746, 877
ShowDialog, 41, 215, 226, 279, 700 SQL Server Management Studio Express, 880
ShowGridLines, 33 SQLCMD, 878
ShowInTaskbar, 42, 44, 217 SqlConnection, 399
ShowsNavigationUI, 550 SqlDataAdapter, 403
Shutdown, 14 SqlDataReader, 402
ShutdownMode, 52 SSDL, 496
SignOut, 787 StackPanel, 30, 61, 178
Silverlight, 605, 708 Startup, 49, 51
<Object>, 613 StartupUri, 14, 50
acceso a datos, 676 StateChanged, 45
administrador de identificadores de StaticResource, 22, 127
recursos, 672 StatusBar, 60, 182
aplicación fuera del explorador, 675 StatusBarItem, 60
arquitectura de una aplicación, 609 Storyboard, 326, 648, 650
arquitectura, 606 Stretch, 655
autenticación y autorización, 675 Style, 58, 119, 270, 326
compilación de la aplicación, 612 subprocesos, 304
comunicación entre dominios, 728 Sum, 479
controles, 615 suscribirse a un evento, 36, 72
crear aplicación, 608 System.Data.Linq, 471
diccionario de recursos, 667 System.Linq, 471
diseño de una página, 615 System.Linq.Expressions, 483
Frame, 666 System.Runtime.CompilerServices, 474, 488
llamadas asíncronas, 725 System.Windows, 28
navegación, 676 System.Windows.Markup, 11
Page, 666 SystemColors, 129
página de entrada, 613 SystemFonts, 129
SDK, 624, 630 SystemParameters, 129
vista de una colección, 686
simultaneidad, 532, 744
sincronizar con CurrentItem, 333
T
sistema de diseño, 29 Tab, 61
sistema de navegación Silverlight, extender, TabControl, 259
675 TabIndex, 61
sitio web, 578 tabla, 385, 864
administración, 798 Table, 287
SizeToContent, 44 Take While, 479
SkewTransform, 646 tamaño de los controles, 866
Slider, 60, 255 tamaño de una fuente, 197
908 VB: INTERFACES GRÁFICAS Y APLICACIONES PARA INTERNET CON WPF, WCF Y SILVERLIGHT
tamaño de una ventana, 64 TreeViewItem, 264
TargetNullValue, 445 Trigger, 121
TargetType, 119 Triggers, 325
tecla de acceso, 28, 61, 67 TryCast, 76
tecla Entrar, 62 TryFindResource, 128
tecla pulsada, interceptar, 84
temas, 130
TemplateBinding, 23
U
temporizador, 303 UIElement, 58, 97
resolución, 306 Unchanged, 397
Text, 75, 77, 247 Unchecked, 228
TextBlock, 26, 60, 224, 618 Undo, 188, 202
TextBox, 26, 59, 62, 188, 624 UNIQUE, 387
TextBoxBase, 59, 188 Unloaded, 199
TextChanged, 76, 92, 235 Update, 404, 466
TextInput, 74 UPDATE, 388
texto seleccionado, 200 UpdateCommand, 403
TextProperty, 98 UpdateSource, 114
TextRange, 298 UpdateSourceTrigger, 97, 101
TextWrapping, 184 URI, 567, 672
Tick, evento, 304 UriMapper, 672
TickFrequency, 255 UriMapping, 672
TickPlacement, 255 User, 820
ticks, 314 UserControl, 60, 590, 611
Timer, 304 Using, 409
TimeSpan, 307, 661
tip, 29
tipo anónimo, 472
V
tipo implícito, 472 validación, 366
tipos SQL, 387 de los datos, 107, 625
ToByteArray, 697 personalizada, 116, 370
ToDouble, 77 proceso, 112, 371
ToggleButton, 60 visualizar errores, 368
ToInt32, 236 validar un campo de texto, 87
ToList, 511 validar un grupo de enlaces, 374
ToolBar, 60, 177 Validate, 116, 370
ToolBarTray, 180 ValidateUser, 801
Toolkit.dll, 843 Validation, 109, 369
ToolTip, 29, 60 Validation.Error, 110
Top, 44 Validation.GetHasError, 110
Topmost, 45 ValidationAttribute, 621
ToString, 237 ValidationRule, 107, 116, 366
ToUpper, 237 ValidationSummary, 625
transacciones, 417 Value, 251, 257
explícitas, 421 Value Object, 425, 501
TransactionScope, 417 ValueChanged, 251
transformaciones, 643 var, 472
TransformGroup, 646 varbinary, 746
TranslateTransform, 644 variable, declaración implícita, 472
TreeView, 264 ventana, 1
ÍNDICE 909
ventana activa, 41 Width, 67
modal, 41 Window, 9, 60
no modal, 41 Windows, 41
posición, 41 Windows Forms, 5
ventanas, 3 WindowStartupLocation, 41, 45
colección, 41 WindowState, 45, 55
VerticalAlignment, 68 WindowStyle, 45
VerticalContentAlignment, 28, 68 WindowTitle, 551
VerticalScrollBarVisibility, 185 WPF, 5, 57
vídeo, 654, 662 WPF, XBAP y Silverlight, 545
View, 319 WrapPanel, 31, 61
Viewbox, 35 WriteableBitmap, 697
vinculación de datos, 89 WriteLine, 144
virtualizar, 359
VirtualizingStackPanel, 359
Visibility, 69, 207
X
vista de colección, 318, 347 x:Array, 23
vista de un DataTable, 467 x:Name, 592
vista de una colección, 333 x:Null, 22
vista PagedCollectionView, 763 x:Static, 23, 130
vista predeterminada, 350 x:Type, 23
vista x:XData, 331
agrupar sus elementos, 337 XAML, 8, 10
elemento actual, 333 extensiones de marcado, 21
filtrar sus elementos, 336, 592 información general, 17
navegar por sus elementos, 334 XamlReader, 11, 40
obtener, 333 XamlWriter, 11
ordenar sus elementos, 335 XBAP, 6, 547, 576
Visual, 58 publicar, 578
Volume, 655 seguridad, 581
y bases de datos, 583
W XCOPY, 877
XML, simular BBDD, 887
WCF, 711 XmlDataProvider, 327
WCF RIA Services, 813, 825 XmlElement, 334
WebBrowser, 602 xmlns, 9, 18
webcam, 664 XPath, 316, 330
WebContext, 816, 820 XPath=@..., 269, 330
Where, 487 XSD, 886
Del mismo autor