0% encontró este documento útil (0 votos)
36 vistas26 páginas

Introducción a WPF: Tutorial Básico

Este documento proporciona una introducción al desarrollo de aplicaciones de Windows Presentation Foundation (WPF). Explica cómo definir la interfaz de usuario con XAML y el código subyacente, crear una aplicación y páginas, agregar controles y diseño, y enlazar datos. A lo largo del tutorial, se construirá una aplicación de ejemplo que muestre informes de gastos de diferentes personas.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
36 vistas26 páginas

Introducción a WPF: Tutorial Básico

Este documento proporciona una introducción al desarrollo de aplicaciones de Windows Presentation Foundation (WPF). Explica cómo definir la interfaz de usuario con XAML y el código subyacente, crear una aplicación y páginas, agregar controles y diseño, y enlazar datos. A lo largo del tutorial, se construirá una aplicación de ejemplo que muestre informes de gastos de diferentes personas.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Tutorial: Introduccin a WPF

En este tutorial se proporciona una introduccin al desarrollo de aplicaciones de Windows Presentation Foundation (WPF), que incluye los elementos comunes a la mayora de las aplicaciones de WPF: marcado Lenguaje XAML, cdigo subyacente, definiciones de aplicacin, controles, diseo, enlace de datos y estilos. Este tutorial le guiar a lo largo del desarrollo de una aplicacin bsica de WPF mediante los pasos siguientes. Definir XAML para disear la apariencia de la interfaz de usuario (UI) de la aplicacin. Escribir cdigo que determine el comportamiento de la aplicacin. Crear una definicin de aplicacin para administrar la aplicacin. Agregar controles y crear el diseo que compone 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 compilado una aplicacin independiente de Windows que permitir a los usuarios ver los informes de gastos de las personas [Link] aplicacin constar de varias pginas de WPF hospedadas en una ventana del estilo del explorador. El cdigo de ejemplo que se utiliza para compilar este tutorial est disponible para Microsoft Visual Basic y C#; vea Introduction to Building WPF Applications.

Requisitos previos
Necesita los componentes siguientes para completar este tutorial: Visual Studio 2012 Para obtener ms informacin sobre cmo instalar Visual Studio, vea Instalar Visual Studio.

Crear el proyecto de aplicacin


En esta seccin, crear la infraestructura de la aplicacin, que incluye una definicin de aplicacin, dos pginas y una imagen. 1. Cree un nuevo proyecto de aplicacin WPF en Visual Basic o Visual C# denominado ExpenseIt. Para obtener ms informacin, vea Cmo: Crear un nuevo proyecto de aplicacin de WPF.

Nota

En este tutorial se utiliza el control DataGrid que est disponible en .NET Framework 4. Asegrese d Framework 4. Para obtener ms informacin, vea Cmo: Usar como destino una versin de .NET Fra
2. Abra [Link] (Visual Basic) o [Link] (C#). Este archivo XAML define una aplicacin WPF y los recursos de la aplicacin. Tambin se utiliza este archivo para especificar la interfaz de usuario que se muestra automticamente cuando se inicia la aplicacin; en este caso, [Link].

Su XAML se debera parecer a lo siguiente en Visual Basic: XAML

<Application x:Class="Application" xmlns="[Link] xmlns:x="[Link] StartupUri="[Link]"> <[Link]> </[Link]> </Application>

O as en C#: XAML

<Application x:Class="[Link]" xmlns="[Link] xmlns:x="[Link] StartupUri="[Link]"> <[Link]> </[Link]> </Application>

3.

4.

5.

Abra [Link]. Este archivo de cdigo XAML es la ventana principal de la aplicacin y muestra contenido creado en pginas. La clase Window define las propiedades de una ventana, como su ttulo, tamao o icono, y controla los eventos, como cerrarse u ocultarse. Cambie el elemento Window por NavigationWindow. Esta aplicacin navegar a contenido diferente segn la interaccin del usuario. Por consiguiente, Window principal necesita cambiar a [Link] hereda todas las propiedades de Window. El elemento NavigationWindow del archivo XAML crea una instancia de la clase [Link] obtener ms informacin, consulte Informacin general sobre navegacin. Cambie las siguientes propiedades en el elemento NavigationWindow: o Establezca la propiedad Title en "ExpenseIt". o Establezca la propiedad Width en 500 pxeles. o Establezca la propiedad Height en 350 pxeles.

o Quite los elementos Grid entre las etiquetas NavigationWindow. Su XAML se debera parecer a lo siguiente en Visual Basic: XAML

<NavigationWindow x:Class="MainWindow" xmlns="[Link] xmlns:x="[Link] Title="ExpenseIt" Height="350" Width="500"> </NavigationWindow>

O as en C#: XAML

<NavigationWindow x:Class="[Link]" xmlns="[Link] xmlns:x="[Link] Title="ExpenseIt" Height="350" Width="500"> </NavigationWindow>

6.

7.

Abra [Link] o [Link]. Este archivo es un archivo de cdigo subyacente que contiene el cdigo para controlar los eventos declarados en [Link]. Este archivo contiene una clase parcial para la ventana definida en XAML. Si est utilizando C#, cambie la clase MainWindow para que se derive de NavigationWindow. En Visual Basic, esto sucede automticamente al cambiar la ventana en XAML. El cdigo debe ser similar al que se muestra a continuacin. C# VB

using using using using using

System; [Link]; [Link]; [Link]; [Link];

using using using using using using using using

[Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link];

namespace ExpenseIt { /// <summary> /// Interaction logic for [Link] /// </summary> public partial class MainWindow : NavigationWindow { public MainWindow() { InitializeComponent(); } } }

Agregar archivos a la aplicacin


En esta seccin, agregar dos pginas y una imagen a la aplicacin. 1. Agregue una nueva pgina (WPF) al proyecto denominada [Link]. Para obtener ms informacin, consulte Cmo: Agregar nuevos elementos a un proyecto de WPF. Esta pgina es la primera pgina que se muestra cuando se inicia la aplicacin. Mostrar una lista de personas y el usuario podr seleccionar en esa lista la persona cuyo informe de gastos desee mostrar. 2. Abra [Link]. 3. Establezca Title en "ExpenseIt - Home". Su XAML se debera parecer a lo siguiente en Visual Basic: XAML

<Page x:Class="ExpenseItHome" xmlns="[Link] xmlns:x="[Link] xmlns:mc="[Link] xmlns:d="[Link] mc:Ignorable="d"

d:DesignHeight="300" d:DesignWidth="300" Title="ExpenseIt - Home"> <Grid> </Grid> </Page>

O a esto en C#: XAML

<Page x:Class="[Link]" xmlns="[Link] xmlns:x="[Link] xmlns:mc="[Link] xmlns:d="[Link] mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300" Title="ExpenseIt - Home"> <Grid> </Grid> </Page>

4. 5.

Abra [Link]. Establezca la propiedad Source de NavigationWindow en "[Link]". Esto establece [Link] como la primera pgina que se abre cuando se inicia la aplicacin. Su XAML se debera parecer a lo siguiente en Visual Basic: XAML

<NavigationWindow x:Class="MainWindow" xmlns="[Link] xmlns:x="[Link] Title="ExpenseIt" Height="350" Width="500" Source="[Link]"> </NavigationWindow>

O a esto en C#: XAML

<NavigationWindow x:Class="[Link]" xmlns="[Link] xmlns:x="[Link] Title="ExpenseIt" Height="350" Width="500" Source="[Link]"> </NavigationWindow>

6.

7. 8.

Agregue una nueva pgina (WPF) al proyecto denominada [Link]. Esta pgina mostrar el informe de gastos de la persona que est seleccionada en [Link]. Abra [Link]. Establezca Title en "ExpenseIt - View Expense". Su XAML se debera parecer a lo siguiente en Visual Basic: XAML

<Page x:Class="ExpenseReportPage" xmlns="[Link] xmlns:x="[Link] xmlns:mc="[Link] xmlns:d="[Link] mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300" Title="ExpenseIt - View Expense"> <Grid> </Grid> </Page>

O a esto en C#: XAML

<Page x:Class="[Link]" xmlns="[Link] xmlns:x="[Link] xmlns:mc="[Link] xmlns:d="[Link] mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300" Title="ExpenseIt - View Expense"> <Grid> </Grid> </Page>

9.

Abra [Link] y [Link] o [Link] y [Link]. Al crear un nuevo archivo de paginacin, Visual Studio crea automticamente un cdigo subyacente. Estos archivos de cdigo subyacente controlan la lgica para responder a los datos proporcionados por el usuario. El cdigo debe ser similar al que se muestra a continuacin. VB

Class ExpenseItHome End Class

C#

using using using using using using using using using using using

System; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link];

using [Link]; using [Link]; namespace ExpenseIt { /// <summary> /// Interaction logic for [Link] /// </summary> public partial class ExpenseItHome : Page { public ExpenseItHome() { InitializeComponent(); } } }

VB

Class ExpenseReportPage End Class

C#

using using using using using using using using using using using using using

System; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link]; [Link];

namespace ExpenseIt { /// <summary> /// Interaction logic for [Link]

/// </summary> public partial class ExpenseReportPage : Page { public ExpenseReportPage() { InitializeComponent(); } } }

10. Agregue una imagen denominada [Link] al proyecto. Puede crear su propia imagen o copiar el archivo del cdigo de ejemplo. Para obtener ms informacin, vea How to: Add Existing Items to a Project.

Compilar y ejecutar la aplicacin


En esta seccin, se compila y ejecuta la aplicacin. 1. Compile y ejecute la aplicacin presionando F5 o seleccione Iniciar depuracin en el men Debug. La siguiente ilustracin muestra la aplicacin con los botones NavigationWindow.

2.

Cierre la aplicacin para volver a Visual Studio.

Crear 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 se crea un diseo con uno de los controles de diseo siguientes: Canvas DockPanel Grid StackPanel VirtualizingStackPanel WrapPanel Cada uno de estos controles de diseo 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.

Nota

Para obtener ms informacin sobre los elementos Panel, vea Informacin general sobre elementos Panel. Pa vea Diseo.
En la seccin, cree una tabla con una columna nica con tres filas y un margen de 10 pxeles agregando definiciones de columna y de fila a la Grid de [Link]. 1. Abra [Link]. 2. Establezca la propiedad Margin en el elemento Grid en "10,0,10,10", que corresponde a los mrgenes izquierdo, superior, derecho e inferior. 3. Agregue el siguiente XAML entre las etiquetas Grid para crear las definiciones de columna y fila. XAML

<[Link]> <ColumnDefinition /> </[Link]> <[Link]> <RowDefinition Height="Auto"/> <RowDefinition /> <RowDefinition Height="Auto"/> </[Link]>

El Height de dos filas est establecido en Auto, lo que quiere decir que las filas se dimensionarn segn su contenido. El Height predeterminado es Star, que significa que la fila ser una proporcin ponderada del espacio disponible. Por ejemplo si cada una de dos filas tiene un alto de "*", ambas tendrn un alto que es la mitad del espacio disponible. Su Grid debe tener la apariencia siguiente: XAML

<Grid Margin="10,0,10,10"> <[Link]> <ColumnDefinition /> </[Link]> <[Link]> <RowDefinition Height="Auto"/> <RowDefinition /> <RowDefinition Height="Auto"/> </[Link]>

</Grid>

Agregar controles
En esta seccin, 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. Los controles son objetos de interfaz de usuario que permiten a los usuarios interactuar con una aplicacin. Para obtener ms informacin, vea Controles. Para crear esta interfaz de usuario, se han agregado los elementos siguientes a [Link]: 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). Cada control se coloca en una fila de la Grid estableciendo la propiedad adjunta [Link]. Para obtener ms informacin sobre propiedades adjuntas, vea Informacin general sobre propiedades asociadas. 1. Abra [Link]. 2. Agregue el cdigo XAML siguiente entre las etiquetas Grid. XAML

<!-- People list --> <Border [Link]="0" [Link]="0" Height="35" Padding="5" Background="#4E87D4"> <Label VerticalAlignment="Center" Foreground="White">Names</Label> </Border> <ListBox Name="peopleListBox" [Link]="0" [Link]="1"> <ListBoxItem>Mike</ListBoxItem> <ListBoxItem>Lisa</ListBoxItem> <ListBoxItem>John</ListBoxItem> <ListBoxItem>Mary</ListBoxItem> </ListBox> <!-- View report button --> <Button [Link]="0" [Link]="2" Margin="0,10,0,0" Width="125" Height="25" HorizontalAlignment="Right">View</Button>

3. Compile y ejecute la aplicacin. La siguiente ilustracin muestra los controles que crea el XAML en esta seccin.

Agregar una imagen y un ttulo


En esta seccin, la interfaz de usuario de la pgina principal se actualiza con una imagen y un ttulo de pgina. 1. Abra [Link]. 2. Agregue otra columna a ColumnDefinitions con un Width fijo de 230 pxeles. XAML

<[Link]> <ColumnDefinition Width="230" /> <ColumnDefinition /> </[Link]>

3.

Agregue otra fila a RowDefinitions. XAML

<[Link]> <RowDefinition/> <RowDefinition Height="Auto"/> <RowDefinition /> <RowDefinition Height="Auto"/> </[Link]>

4.

Mueva los controles a la segunda columna estableciendo [Link] en 1. Baje cada control una fila aumentando [Link] en 1. XAML

<Border [Link]="1" [Link]="1" Height="35" Padding="5" Background="#4E87D4"> <Label VerticalAlignment="Center" Foreground="White">Names</Label> </Border> <ListBox Name="peopleListBox" [Link]="1" [Link]="2"> <ListBoxItem>Mike</ListBoxItem> <ListBoxItem>Lisa</ListBoxItem> <ListBoxItem>John</ListBoxItem> <ListBoxItem>Mary</ListBoxItem> </ListBox> <!-- View report button --> <Button [Link]="1" [Link]="3" Margin="0,10,0,0" Width="125" Height="25" HorizontalAlignment="Right">View</Button>

5.

Establezca Background de Grid para que sea el archivo de imagen [Link]. XAML

<[Link]> <ImageBrush ImageSource="[Link]"/> </[Link]>

6.

Antes de Border, agregue Label con el contenido "View Expense Report" para que sea el ttulo de la pgina. XAML

<Label [Link]="1" VerticalAlignment="Center" FontFamily="Trebuchet MS" FontWeight="Bold" FontSize="18" Foreground="#0066cc"> View Expense Report </Label>

7. Compile y ejecute la aplicacin. En la ilustracin siguiente se muestra el resultado de esta seccin.

Agregar cdigo para controlar eventos


1. 2. Abra [Link]. Agregue el controlador de eventos Click al elemento Button. Para obtener ms informacin, vea Cmo: Crear controladores de eventos simples. XAML

<!-- View report button --> <Button [Link]="1" [Link]="3" Margin="0,10,0,0" Width="125" Height="25" HorizontalAlignment="Right" Click="Button_Click">View</Button>

3. 4.

Abra [Link] o [Link]. Agregue el siguiente cdigo al controlador de eventos Click, que hace que la ventana navegue hasta el archivo [Link]. C# VB

private void Button_Click(object sender, RoutedEventArgs e)

{ // View Expense Report ExpenseReportPage expenseReportPage = new ExpenseReportPage(); [Link](expenseReportPage); }

Crear la interfaz de usuario para ExpenseReportPage


[Link] muestra el informe de gastos de la persona que se seleccion en [Link]. En esta seccin se agregan los controles y se crea la interfaz de usuario para [Link]. Tambin se agrega un fondo y colores de relleno a los distintos elementos de la interfaz de usuario. 1. Abra [Link]. 2. Agregue el cdigo XAML siguiente entre las etiquetas Grid. Esta interfaz de usuario es similar a la interfaz de usuario creada en [Link], con la salvedad de que los datos del informe se muestran en DataGrid. XAML

<[Link]> <ImageBrush ImageSource="[Link]" /> </[Link]> <[Link]> <ColumnDefinition Width="230" /> <ColumnDefinition /> </[Link]> <[Link]> <RowDefinition Height="Auto" /> <RowDefinition /> </[Link]>

<Label [Link]="1" VerticalAlignment="Center" FontFamily="Trebuchet MS" FontWeight="Bold" FontSize="18" Foreground="#0066cc"> Expense Report For: </Label> <Grid Margin="10" [Link]="1" [Link]="1"> <[Link]> <ColumnDefinition /> <ColumnDefinition /> </[Link]> <[Link]>

<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition /> </[Link]> <!-- Name --> <StackPanel [Link]="0" [Link]="2" [Link]="0" Orientation="Horizontal"> <Label Margin="0,0,0,5" FontWeight="Bold">Name:</Label> <Label Margin="0,0,0,5" FontWeight="Bold"></Label> </StackPanel> <!-- Department --> <StackPanel [Link]="0" [Link]="2" [Link]="1" Orientation="Horizontal"> <Label Margin="0,0,0,5" FontWeight="Bold">Department:</Label> <Label Margin="0,0,0,5" FontWeight="Bold"></Label> </StackPanel> <Grid [Link]="0" [Link]="2" [Link]="2" VerticalAlignment="Top" HorizontalAlignment="Left"> <!-- Expense type and Amount table --> <DataGrid AutoGenerateColumns="False" RowHeaderWidth="0" > <[Link]> <Style TargetType="{x:Type DataGridColumnHeader}"> <Setter Property="Height" Value="35" /> <Setter Property="Padding" Value="5" /> <Setter Property="Background" Value="#4E87D4" /> <Setter Property="Foreground" Value="White" /> </Style> </[Link]> <[Link]> <DataGridTextColumn Header="ExpenseType" /> <DataGridTextColumn Header="Amount" /> </[Link]> </DataGrid> </Grid> </Grid>

3.

Compile y ejecute la aplicacin.

Nota

Si obtiene un error que indica que DataGrid no se encuentra o no existe, asegrese de que el proyecto 4. Para obtener ms informacin, vea Cmo: Usar como destino una versin de .NET Framework.
Haga clic en el botn Ver. Aparecer la pgina de informe de gastos. La ilustracin siguiente muestra los elementos de la interfaz de usuario agregados a [Link]. Observe que el botn de navegacin hacia atrs est habilitado. 4.

Estilo de los controles


Es habitual que todos los elementos del mismo tipo de una interfaz de usuario presenten la misma apariencia. 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 de XAML. Para obtener ms informacin acerca de los estilos, consulte Aplicar estilos y plantillas. En esta seccin se reemplazan por estilos los atributos que se definieron en pasos anteriores para los distintos elementos. 1. Abra [Link] o [Link]. 2. Agregue el cdigo XAML siguiente entre las etiquetas [Link]: XAML

<!-- Header text style --> <Style x:Key="headerTextStyle"> <Setter Property="[Link]" Value="Center"></Setter> <Setter Property="[Link]" Value="Trebuchet MS"></Setter> <Setter Property="[Link]" Value="Bold"></Setter> <Setter Property="[Link]" Value="18"></Setter> <Setter Property="[Link]" Value="#0066cc"></Setter> </Style>

<!-- Label style --> <Style x:Key="labelStyle" TargetType="{x:Type Label}"> <Setter Property="VerticalAlignment" Value="Top" /> <Setter Property="HorizontalAlignment" Value="Left" /> <Setter Property="FontWeight" Value="Bold" /> <Setter Property="Margin" Value="0,0,0,5" /> </Style> <!-- DataGrid header style --> <Style x:Key="columnHeaderStyle" TargetType="{x:Type DataGridColumnHeader}"> <Setter Property="Height" Value="35" /> <Setter Property="Padding" Value="5" /> <Setter Property="Background" Value="#4E87D4" /> <Setter Property="Foreground" Value="White" /> </Style> <!-- List header style --> <Style x:Key="listHeaderStyle" TargetType="{x:Type Border}"> <Setter Property="Height" Value="35" /> <Setter Property="Padding" Value="5" /> <Setter Property="Background" Value="#4E87D4" /> </Style> <!-- List header text style --> <Style x:Key="listHeaderTextStyle" TargetType="{x:Type Label}"> <Setter Property="Foreground" Value="White" /> <Setter Property="VerticalAlignment" Value="Center" /> <Setter Property="HorizontalAlignment" Value="Left" /> </Style> <!-- Button style --> <Style x:Key="buttonStyle" TargetType="{x:Type Button}"> <Setter Property="Width" Value="125" /> <Setter Property="Height" Value="25" /> <Setter Property="Margin" Value="0,10,0,0" /> <Setter Property="HorizontalAlignment" Value="Right" /> </Style>

Este XAML agrega los estilos siguientes: o headerTextStyle: para dar formato al control Label de ttulo de pgina. o labelStyle: para dar formato a los controles Label. o columnHeaderStyle: para dar formato a DataGridColumnHeader. o listHeaderStyle: para dar formato a los controles Border de encabezado de lista. o listHeaderTextStyle: para dar formato a los controles Label de encabezado de lista.

3. 4.

o buttonStyle: para dar formato a Button en "[Link]". Observe que los estilos son recursos y elementos secundarios del elemento de propiedad [Link]. En esta ubicacin, los estilos se aplican a todos los elementos de una aplicacin. Para obtener un ejemplo del uso de los recursos en una aplicacin de .NET Framework, consulte Cmo: Usar recursos de aplicaciones. Abra [Link]. Reemplace todo lo que hay entre los elementos Grid por el siguiente XAML. XAML

<[Link]> <ImageBrush ImageSource="[Link]" </[Link]> <[Link]> <ColumnDefinition Width="230" /> <ColumnDefinition /> </[Link]> <[Link]> <RowDefinition/> <RowDefinition Height="Auto"/> <RowDefinition /> <RowDefinition Height="Auto"/> </[Link]> <!-- People list -->

/>

<Label [Link]="1" Style="{StaticResource headerTextStyle}" > View Expense Report </Label> <Border [Link]="1" [Link]="1" Style="{StaticResource listHeaderStyle}"> <Label Style="{StaticResource listHeaderTextStyle}">Names</Label> </Border> <ListBox Name="peopleListBox" [Link]="1" [Link]="2"> <ListBoxItem>Mike</ListBoxItem> <ListBoxItem>Lisa</ListBoxItem> <ListBoxItem>John</ListBoxItem> <ListBoxItem>Mary</ListBoxItem> </ListBox> <!-- View report button --> <Button [Link]="1" [Link]="3" Click="Button_Click" Style="{StaticResource buttonStyle}">View</Button>

5. 6.

Las propiedades como VerticalAlignment y FontFamily que definen la apariencia de cada control se quitan y reemplazan aplicando los estilos. Por ejemploheaderTextStyle se aplica a Label "View Expense Report". Abra [Link]. Reemplace todo lo que hay entre los elementos Grid por el siguiente XAML. XAML

<[Link]> <ImageBrush ImageSource="[Link]" /> </[Link]> <[Link]> <ColumnDefinition Width="230" /> <ColumnDefinition /> </[Link]> <[Link]> <RowDefinition Height="Auto" /> <RowDefinition /> </[Link]>

<Label [Link]="1" Style="{StaticResource headerTextStyle}"> Expense Report For: </Label> <Grid Margin="10" [Link]="1" [Link]="1"> <[Link]> <ColumnDefinition /> <ColumnDefinition /> </[Link]> <[Link]> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition /> </[Link]> <!-- Name --> <StackPanel [Link]="0" [Link]="2" [Link]="0" Orientation="Horizontal"> <Label Style="{StaticResource labelStyle}">Name:</Label> <Label Style="{StaticResource labelStyle}"></Label> </StackPanel> <!-- Department --> <StackPanel [Link]="0" [Link]="2" [Link]="1" Orientation="Horizontal">

<Label Style="{StaticResource labelStyle}">Department:</Label> <Label Style="{StaticResource labelStyle}"></Label> </StackPanel> <Grid [Link]="0" [Link]="2" [Link]="2" VerticalAlignment="Top" HorizontalAlignment="Left"> <!-- Expense type and Amount table --> <DataGrid ColumnHeaderStyle="{StaticResource columnHeaderStyle}" AutoGenerateColumns="False" RowHeaderWidth="0" > <[Link]> <DataGridTextColumn Header="ExpenseType" /> <DataGridTextColumn Header="Amount" /> </[Link]> </DataGrid> </Grid> </Grid>

7.

Esto agrega estilos a los elementos Border y Label. Compile y ejecute la aplicacin. Despus de agregar el marcado XAML de esta seccin, la aplicacin presenta la misma apariencia que tena antes de actualizarla con los estilos.

Enlazar datos a controles


En esta seccin se crean los datos XML que se enlazan a varios controles. 1. Abra [Link]. 2. Despus del elemento inicial Grid, agregue el siguiente XAML para crear un XmlDataProvider que contenga los datos de cada persona. Los datos se crean como un recurso Grid. Normalmente esto se cargara como un archivo, pero por sencillez los datos se agregan alineados. XAML

<[Link]>

...

<!-- Expense Report Data --> <XmlDataProvider x:Key="ExpenseDataSource" XPath="Expenses"> <x:XData> <Expenses xmlns="">

<Person Name="Mike" Department="Legal"> <Expense ExpenseType="Lunch" ExpenseAmount="50" /> <Expense ExpenseType="Transportation" ExpenseAmount="50" /> </Person> <Person Name="Lisa" Department="Marketing"> <Expense ExpenseType="Document printing" ExpenseAmount="50"/> <Expense ExpenseType="Gift" ExpenseAmount="125" /> </Person> <Person Name="John" Department="Engineering"> <Expense ExpenseType="Magazine subscription" ExpenseAmount="50"/> <Expense ExpenseType="New machine" ExpenseAmount="600" /> <Expense ExpenseType="Software" ExpenseAmount="500" /> </Person> <Person Name="Mary" Department="Finance"> <Expense ExpenseType="Dinner" ExpenseAmount="100" /> </Person> </Expenses> </x:XData> </XmlDataProvider>

...

</[Link]>

3.

En el recurso Grid, agregue la siguiente DataTemplate, que define cmo mostrar los datos en ListBox. Para obtener ms informacin sobre plantillas de datos, veaInformacin general sobre plantillas de datos. XAML

<[Link]>

...

<!-- Name item template --> <DataTemplate x:Key="nameItemTemplate">

<Label Content="{Binding XPath=@Name}"/> </DataTemplate>

...

</[Link]>

4.

Reemplace ListBox por el siguiente XAML. XAML

<ListBox Name="peopleListBox" [Link]="1" [Link]="2" ItemsSource="{Binding Source={StaticResource ExpenseDataSource}, XPath=Person}" ItemTemplate="{StaticResource nameItemTemplate}"> </ListBox>

Este XAML enlaza la propiedad ItemsSource de ListBox al origen de datos y aplica la plantilla de datos como ItemTemplate.

Conectar los datos a los controles


En esta seccin, escribir el cdigo que recupera el elemento actual que est seleccionado en la lista de personas de la pgina [Link] y que 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 [Link]. 1. Abra [Link] o [Link]. 2. Agregue un constructor que tome un objeto de modo que pueda pasar los datos del informe de gastos de la persona seleccionada. C# VB

public partial class ExpenseReportPage : Page { public ExpenseReportPage() { InitializeComponent(); }

// Custom constructor to pass expense report data public ExpenseReportPage(object data):this() { // Bind to expense report data. [Link] = data; } }

3. 4.

Abra [Link] o [Link]. Cambie el controlador de eventos Click para llamar al nuevo constructor que pasa los datos del informe de gastos de la persona seleccionada. C# VB

private void Button_Click(object sender, RoutedEventArgs e) { // View Expense Report ExpenseReportPage expenseReportPage = new ExpenseReportPage([Link]); [Link](expenseReportPage); }

Dar estilos a los datos con plantillas de datos


En esta seccin, actualizar la interfaz de usuario para cada elemento de las listas enlazadas a datos utilizando las plantillas de datos. 1. Abra [Link]. 2. Enlace el contenido de elementos Label "Department" y "Name" a la propiedad de origen de datos adecuada. Para obtener ms informacin sobre el enlace de datos, vea Informacin general sobre el enlace de datos. XAML

<!-- Name --> <StackPanel [Link]="0" [Link]="2" [Link]="0" Orientation="Horizontal"> <Label Style="{StaticResource labelStyle}">Name:</Label>

<Label Style="{StaticResource labelStyle}" Content="{Binding XPath=@Name}"></Label> </StackPanel> <!-- Department --> <StackPanel [Link]="0" [Link]="2" [Link]="1" Orientation="Horizontal"> <Label Style="{StaticResource labelStyle}">Department:</Label> <Label Style="{StaticResource labelStyle}" Content="{Binding XPath=@Department}"></Label> </StackPanel>

3.

Despus de abrir el elemento Grid, agregue las siguientes plantillas de datos, que definen cmo mostrar los datos del informe de gastos. XAML

<!--Templates to display expense report data--> <[Link]> <!-- Reason item template --> <DataTemplate x:Key="typeItemTemplate"> <Label Content="{Binding XPath=@ExpenseType}"/> </DataTemplate> <!-- Amount item template --> <DataTemplate x:Key="amountItemTemplate"> <Label Content="{Binding XPath=@ExpenseAmount}"/> </DataTemplate> </[Link]>

4.

Aplique las plantillas a las columnas de DataGrid que muestran los datos del informe de gastos. XAML

<!-- Expense type and Amount table --> <DataGrid ItemsSource="{Binding XPath=Expense}" ColumnHeaderStyle="{StaticResource columnHeaderStyle}" AutoGenerateColumns="False" RowHeaderWidth="0" > <[Link]> <DataGridTextColumn Header="ExpenseType" Binding="{Binding XPath=@ExpenseType}" />

<DataGridTextColumn Header="Amount" Binding="{Binding XPath=@ExpenseAmount}" /> </[Link]> </DataGrid>

5. Compile y ejecute la aplicacin. 6. Seleccione una persona y haga clic en el botn Ver. En la siguiente ilustracin 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 aplicados.

También podría gustarte