wpf listbox list binding




WPF-画像のObservableCollectionにリストボックスをバインドする (2)

私はどちらかと思います。
1)ObservableCollectionを初期化しなかった
2)あなたのウィンドウのDataContextを設定しなかった、または
3)ObservableCollectionにCustomItemを追加した後にImageを設定していて、CustomItemクラスにINotifyPropertyChangedを実装していない場合。

あなたのコードとこれは私にとってはうまくいくようです:

    public MainWindow()
    {
        InitializeComponent();
        this.AvailableItems = new ObservableCollection<CustomItem>();
        Image i = new Image();
        BitmapImage src = new BitmapImage();
        src.BeginInit();
        src.UriSource = new Uri(@"C:\Users\Public\Pictures\Sample Pictures/Desert.jpg");
        src.EndInit();
        i.Source = src;
        i.Stretch = System.Windows.Media.Stretch.Fill;

        CustomItem ci = new CustomItem();
        ci.ThumbnailImage = i;

        this.AvailableItems.Add(ci);
    }


    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        this.DataContext = this;
    }

これは非常にシンプルでなければなりませんが、私はそれがうまく動作することができません...

CustomItemはThumbnailImageという名前のプロパティを持つクラスです。ObservableCollectionをListBoxにバインドして画像を表示しようとしています。 これは私のコードです:

public ObservableCollection<CustomItem> AvailableItems { get; set; }

 <ListBox Width="103" Height="480" ItemsSource="{Binding AvailableItems}">
    <ListBox.ItemTemplate>
       <DataTemplate>
          <Border BorderBrush="Black" BorderThickness="1">
             <ContentControl Content="{Binding Path=ThumbnailImage}" 
                                             Width="100" Height="100" />
          </Border>
       </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

CustomItemは次のようになります

    public class CustomItem
        public Image ThumbnailImage { get; set; }
    }

ListBoxを実行すると、何も表示されません。 どんなアイデアが間違っているのでしょうか? ありがとう!

私はItemsSource = "{Binding AvailableItems、UpdateSourceTrigger = PropertyChanged}"を追加しようとしましたが、それはdidn '助けてください:(

- 編集2 -

私はXAMLで次のことをしていました

DataContext="{Binding RelativeSource={RelativeSource Self}}" 

代わりに私がコードビハインドで次のことをしたとき、すべてがうまくいった:

DataContext = this;

あなたが投稿したコードはうまくいくので、問題は他のものでなければならない

  • ListBoxは適切なDataContextを持っているので、適切にAvailableItemsバインドできますか?
  • どのようにコード内のImageを初期化していますか?

BitmapImage source = new BitmapImage();
source.BeginInit();
source.UriSource = new Uri(yourUriString, UriKind.RelativeOrAbsolute);
source.EndInit();

ThumbnailImage = new Image();
ThumbnailImage.Source = source;

あなたのコードをサンプルプロジェクトに貼り付けて、うまくいきました。ここにアップロードしました。
http://www.mediafire.com/download.php?m99kv1uglrr31j9

あなたのバージョンと比較して、あなたが逃しているものを見てください





observablecollection