Technology Experience
.NET World

Usare la ListView

Partiamo da questo screenshot:

L’altra volta avevamo visto come gestire da codice l’orribile TextBox inserita nel menù, con il relativo Button per poter salvare l’immagine sul proprio disco fisso locale. Per maggiori informazioni leggete questo post.

Questo ContextMenu dà accesso ad alcune altre funzionalità piuttosto divertenti, come quella per richiedere l’elenco dei tag associati ad una particolare fotografia. Il codice è molto semplice e compatto:

private void TagsMenuClick(object sender, RoutedEventArgs args) { FlickrBrowserPhoto photo = lstPhotos.SelectedItem as FlickrBrowserPhoto; string id = photo.PhotoId; PhotoInfoTag[] tags = flickrConn.PhotosGetInfo(id).Tags.TagCollection; StringBuilder bld = new StringBuilder(); foreach (PhotoInfoTag t in tags) bld.AppendLine(t.TagText); MessageBox.Show(bld.ToString()); }

Per semplicità, i tag vengono visualizzati con una rozza MessageBox.Show.

Quello di cui voglio brevemente parlare adesso è la visualizzazione delle informazioni EXIF associate ad una fotografia. Per farlo, ho creato una nuova Window, ExifWindow, il cui XAML è questo:

<Window x:Class="FlickrBrowser.ExifWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="FlickrBrowser" Height="300" Width="300" WindowStartupLocation="CenterScreen" > <ListView ItemsSource="{Binding Path=ExifTag}" HorizontalAlignment="Stretch" Margin="4" Name="lstExifInfo"> <ListView.View> <GridView> <GridViewColumn Width="100" Header="Label" DisplayMemberBinding = "{Binding Path=Label}" /> <GridViewColumn Width="100" Header="Value" DisplayMemberBinding = "{Binding Path=Raw}" /> </GridView> </ListView.View> </ListView> </Window>

Una Window, di dimensioni 300×300, che appare al centro dello schermo. Tale Window contiene un solo oggetto ListView, al quale diciamo che ogni item sarà di tipo ExifTag. La ListView comprende due colonne: la prima viene bindata alla proprietà Label della classe ExifTag, mentre la seconda alla proprietà Raw. Ho dato una larghezza alle colonne ed un header. Nulla di particolarmente complicato, insomma.

Quando l’utente vuole vedere le informazioni EXIF di una foto, utilizzo la libreria di Flickr per poter ottenere una struttura ExifTag[] da poter bindare.

private void ExifMenuClick(object sender, RoutedEventArgs args) { FlickrBrowserPhoto photo = lstPhotos.SelectedItem as FlickrBrowserPhoto; string id = photo.PhotoId; ExifTag[] exif = flickrConn.PhotosGetExif(id).ExifTagCollection; ExifWindow wnd = new ExifWindow(); wnd.SetExifInfo(exif); wnd.ShowDialog(); }

Ottengo il PhotoId della foto selezionata, ottengo l’elenco ExifTag[], creo un’istanza della Window ExifWindow, chiamo il suo metodo SetExifInfo e poi la visualizzo come modale. Quest’ultimo metodo pubblico è molto semplice:

public void SetExifInfo(ExifTag[] exif) { lstExifInfo.ItemsSource = exif; }

Non faccio altro che impostare il data-binding sulla ListView, dicendo di prendere l’elenco delle informazioni EXIF prelevate dalla foto. Il risultato è il seguente:

Ed il gioco è fatto!

Technorati Tags:    

Send to Kindle

Igor Damiani

La sua passione per l'informatica nasce nella prima metà degli anni '80, quando suo padre acquistò un Texas Instruments TI-99. Da allora ha continuato a seguire l'evoluzione sia hardware che software avvenuta nel corso degli anni. E' un utente, un videogiocatore ed uno sviluppatore software a tempo pieno. Igor ha lavorato e lavora anche oggi con le più moderne tecnologie Microsoft per lo sviluppo di applicazioni: .NET Framework, XAML, Universal Windows Platform, su diverse piattaforme, tra cui spiccano Windows 10 piattaforme mobile. Numerose sono le app che Igor ha creato e pubblicato sul marketplace sotto il nome VivendoByte, suo personale marchio di fabbrica. Adora mantenere i contatti attraverso Twitter e soprattutto attraverso gli eventi delle community .NET.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.