2009-04-16 13 views
1

これは、私を殺して、私は、リストボックスの項目として表示する画像を取得することはできません。ここに私のコードは次のとおりです。WPFリストボックスイメージバインディングの質問(再び)!

WPF:

// listbox called lstWidgets 
<ListBox.ItemTemplate> 
<DataTemplate> 
    <StackPanel> 
     <TextBlock Name="txtTitle" Margin="2,5,5,2" Text="{Binding name}" /> 
     <Image Name="imgDisp" Source="{Binding img}" Width="50" Height="50"/> 
    .....  

のC#:

Class widget/props: string name, Image img (get,set)... 
ObservableCollection<cls_Widget> widgets.... 
Image newImage = new Image(); 
newImage.Source = new ImageSourceConverter().ConvertFromString("")as ImageSource; 
cls_Widget wdg = new cls_Widget(); 
wdg.img = newImage 
wdg.name = "My Widget"; 
widgets.Add(wdg);     
lstWidgets.ItemsSource = widgets; 
.... 

textblockテキストは表示されますが、イメージは表示されません(イメージ領域は空白です)。 何か助けていただきありがとうございます!さまざまなコードシナリオで表示するイメージを取得しましたが、このイメージは表示されません。

ありがとうございます。

答えて

3

私はイメージではなく、イメージソースを公開する必要があると思います。 テンプレートにイメージがあります。

Visual Studioでデバッグ出力を見ると、バインディングで何が失敗しているかがわかります。

+0

ああ、あなたがたの古い出力ウィンドウ(私にバインディングエラーを示した)..私はイメージソースにクラスの小道具を変更し、それが働いた。..ムーチョグラシアス – jdr120

+0

:これを試してみてください – benPearce

0

イメージのソースをバッキングプロパティにバインドする場合、バッキングプロパティはイメージではなくイメージソースである必要があります。

また、ContentControlを使用してオブジェクト内のイメージを表示することもできます。これが受け入れ答えではないのはなぜ

... 
<TextBlock Name="txtTitle" Margin="2,5,5,2" Text="{Binding name}" /> 
<ContentControl Name="imgDisp" Width="50" Height="50" Padding="0" 
       Content="{Binding img}"/> 
...