2010-01-15 4 views
1

J'essaie de faire mon premier projet WPF, et j'ai commencé avec this sample project pour l'affichage des images. Une partie de c'est le XAML qui lie un Listbox à un tableau d'images:WPF: liaison d'une ItemsSource à un répertoire

<ListBox.ItemsSource> 
    <x:Array Type="{x:Type ImageSource}"> 
     <ImageSource>http://static.flickr.com/34/70703587_b35cf6d9eb.jpg</ImageSource> 
     <ImageSource>http://static.flickr.com/20/70703557_494d721b23.jpg</ImageSource> 
     <ImageSource>http://static.flickr.com/35/70703504_3ebf8f0150.jpg</ImageSource> 
     <ImageSource>http://static.flickr.com/35/70703474_18ef30450f.jpg</ImageSource> 
    </x:Array> 
</ListBox.ItemsSource> 

Maintenant, c'est bien, mais je voudrais lier à toutes les images dans un sous-dossier et il est sous-dossiers qui correspondent à un modèle. Ma structure de répertoire est la suivante:

Archive 
    1994-01 
     Index.jpg 
     Page1.jpg 
     ... 
     PageN.jpg 
    1994-02 
     Index.jpg 
     Page1.jpg 
     ... 
     PageN.jpg 

Je veux lier la Listbox aux diverses images Index.jpg. Mon approche normale serait de faire CodeBehind en utilisant System.IO et Directory.GetFiles, mais comme XAML semble assez puissant, je me demande simplement: Ce type de liaison peut-il être entièrement réalisé dans le XAML? Comme dit, débutant total dans WPF et je veux le faire le "bon" chemin, qui semble être DataBinding.

Répondre

4

La façon « correcte » du point de vue WPF serait ce (séparant le code et la présentation):

public class IndexReader: INotifyPropertyChanged 
    { 
     public IEnumerable<string> IndexFiles 
      { get { ... } set { ... raise notify } } 

     public void ReadIndexImagesFromFolder(string folder) 
     { 
... 
     } 
    } 

vous utiliseriez encore se lier à lier à la zone de liste (après avoir défini une instance ensemble de IndexReader à DataContext de ListBox ou un de ses parents):

<ListBox ItemsSource="{Binding IndexFiles}"/> 

La règle est: si elle ne peut pas être lié facilement, ne tentez pas.

Questions connexes