2012-04-04 13 views
0

私はWPFが新しく、ListBoxに画像を表示するアプリケーションを作成したいと考えています。 _Imagesというクラスを作成しました。ローカルフォルダから画像を取得し、リストに入れます。WPF ListBox ItemsSourceバインディングで参照されるパスが見つかりません

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); 

      } 
     } 
    } 
}  

私のXAMLでは、私の名前空間を参照しました。

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

DataContextに入れます。

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

しかし、私は(プロパティではなく、コード内)のItemsSourceを使用して、imgList上のアイテムで自分のListBoxを養うたいとき、彼は私がimgListに関連付けることができます任意のパスを見つけることができません。

のListBox XAML:

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

メインウィンドウコード:

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

    } 
} 

私はのObservableCollectionを使用しようとしましたが、それは使用ですありません。

ヘルプ? ):

答えて

0

私はあなたがそれを追加したときに起こります(そのクラスのコンストラクタが呼び出されると、あなたのクラス_imagesは公共

  • として宣言されていないよう

    1. が見えます。..物事のカップルに気づきましたWindow.DataContext、 としてあなたがアンダースコアでクラスに名前を付けるべきではありませんか/どこCarregaImagens()が呼び出されるん。それは今までにいない場合は?呼び出さん、デフォルトコンストラクタに入れる。

    2. (それはです〜するプライベートメンバーの場合) xamlでバインドするには、プロパティをプライベートにすることはできません。これらのヘルプhoper

    ...

  • +0

    まあ、私はこのいくつかの変更を行い、全く使用しません。 私は_Images(今imagens)をpublicと宣言し、CarregaImagens()が呼び出されて実行されますが、imgList(画像がありロードされる)だけを使用するようにデータをバインドしようとすると何も起こりません。 :/ – limabi