Ejercicio: Personalización de la apariencia de las filas de ListView
En el ejercicio anterior se ha configurado el control ListView
para mostrar la colección mediante una llamada a ToString
en cada elemento. En este ejercicio, personalizará la pantalla con ImageCell
para mostrar una imagen y dos etiquetas.
Definición de ImageCell para la visualización de una fila
Primero deberá crear una instancia DataTemplate
y asignarla a la propiedad ItemTemplate
del control ListView
. Para establecer las dos etiquetas:
Abra la página de marcado AllFlags.xaml.
Asigne la propiedad
ListView.ItemTemplate
a una nueva instancia deDataTemplate
.<ListView ...> <ListView.ItemTemplate> <DataTemplate> </DataTemplate> </ListView.ItemTemplate> </ListView>
En la instancia de
DataTemplate
, cree una instancia deImageCell
.Establezca
DetailColor
enDetailColor
(Gris).Use
{Binding}
para mostrar la propiedadCountry
de la bandera en la propiedadText
deImageCell
.Use
{Binding}
para mostrar la propiedadDateAdopted
de la bandera en la propiedadDetail
deImageCell
. En el enlace, incluya un valorStringFormat
deStringFormat
.<ListView ...> <ListView.ItemTemplate> <DataTemplate> <ImageCell DetailColor="Gray" Text="{Binding Country}" Detail="{Binding DateAdopted, StringFormat='Adopted on {0:d}'}"/> </DataTemplate> </ListView.ItemTemplate> </ListView>
Ejecute la aplicación. Cada marcador debe ir acompañado del nombre de país y la fecha en que se adoptó la bandera.
Agregar una imagen a la fila
Por último, debe agregar la imagen de la bandera a la fila. Necesitamos un convertidor de valores para cargar las imágenes de las banderas. La página de detalles ya incluye un convertidor que puede usar. Muévalo al ámbito global para que esté disponible también en la página de lista.
Abra la página de marcado FlagDetailsPage.xaml.
Mueva el elemento
ResourceDictionary
al archivoResourceDictionary
. Debe mover las definiciones de espacio de nombres de los convertidores (xmlns:cvt
) y los datos (xmlns:data
).Abra el archivo AllFlags.xaml.
Enlace los datos de la propiedad
ImageCell.ImageSource
a la propiedadImageUrl
mediante el convertidor.<ListView ...> <ListView.ItemTemplate> <DataTemplate> <ImageCell DetailColor="Gray" ImageSource="{Binding ImageUrl, Converter={StaticResource irConverter}}" Text="{Binding Country}" Detail="{Binding DateAdopted, StringFormat='Adopted on {0:d}'}"/> </DataTemplate> </ListView.ItemTemplate> </ListView>
Ejecute la aplicación. Ahora debería ver las imágenes de las banderas de cada país.