2012-04-04 5 views
0

Ich bin neu in WPF und ich möchte eine App, die Bilder in einer ListBox zeigt. Ich habe eine Klasse namens _Images, die Bilder aus einem lokalen Ordner erstellt, erstellt eine Liste.WPF ListBox ItemsSource Bindungen findet nicht Pfad referenzierte

namespace wpfAppSlides.Imagens 
{ 
    class _Images 
    { 
     public List<Image> imgList = new List<Image>(); 

     public void CarregaImagens() 
     { 
      string dir = @"C:\Users\devUser\Img"; 

      foreach (string file in Directory.GetFiles(dir)) 
      { 
       Image image = new Image(); 
       BitmapImage source = new BitmapImage(); 
       source.BeginInit(); 
       source.UriSource = new Uri(file, UriKind.Relative); 
       source.EndInit(); 
       image.Source = source; 

       imgList.Add(image); 

      } 
     } 
    } 
}  

Dann, in meinem XAML, referenzierte ich meine Namespaces.

xmlns:is="clr-namespace:wpfAppSlides._Images" 
xmlns:col="clr-namespace:wpfAppSlides" 

Und in einen DataContext.

<Window.DataContext> 
    <is:_Images></is:_Images> 
</Window.DataContext> 

Aber wenn ich meine ListBox will füttern mit den Einzelteilen auf imgList, mit Itemssource (in Eigenschaften, nicht-Code), er findet keinen Pfad, den ich imgList beziehen kann.

ListBox XAML:

<ListBox Height="110" 
      HorizontalAlignment="Left" 
      Margin="14,50,0,0" 
      Name="listBox1" 
      VerticalAlignment="Top" 
      Width="477" ItemsSource="{Binding}" /> 

Mainwindow-Code:

public partial class MainWindow : Window 
{ 
    _Imagens imgs; 
    public MainWindow() 
    { 
     InitializeComponent(); 
     imgs = (_Images)this.DataContext; 
     imgs.CarregaImagens(); 

    } 
} 

Ich versuchte ObservableCollection zu verwenden, aber es nützt nichts.

Hilfe?):

Antwort

0

ich ein paar Dinge aufgefallen ..

  1. wie Ihre Klasse sieht _images als öffentlich nicht

  2. erklärt Wenn Konstruktor dieser Klasse aufgerufen wird (passiert, wenn Sie es hinzugefügt wie Window.DataContext, wie/wo CarregaImagens tut() aufgerufen. hat es jemals aufgerufen? Wenn nicht, in dem Standard-Konstruktor setzt in.

  3. Sie keine Klasse mit einem Unter nennen sollen (das ist die zu übertragen ntion für ein privates Mitglied) Sie wissen, dass die Eigenschaft nicht privat sein kann, um in XAML zu binden?

hoper diese helfen ...

+0

Nun, habe ich diese paar Änderungen und war zwecklos. Ich erklärte _Images (jetzt Bilder) als öffentlich und CarregaImagens() wird aufgerufen und ausgeführt, aber wenn ich versuche, die Daten zu binden, nur imgList zu verwenden : / – limabi