2009-04-16 6 views
1

Cela me tue, je ne peux pas obtenir une image à afficher comme un élément de liste: voici mon code:WPF Listbox Image question de liaison (à nouveau)!

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

Le textblock Le texte est affiché, mais l'image ne l'est pas (la zone de l'image est vide) .. J'apprécie toute aide! J'ai obtenu et l'image à afficher dans différents scénarios de code, mais pas celui-ci ...

Merci d'avance.

Répondre

3

Je pense que vous devez exposer l'imageSource, pas une image. Vous avez déjà une image dans le modèle.

En regardant la sortie de débogage dans Visual Studio peut indiquer ce qui échoue sur la liaison, soit dit en passant.

+0

Ahh vous ancienne fenêtre de sortie (m'a montré l'erreur de liaison) .. J'ai changé l'hélice de classe à une source d'image, et cela a fonctionné .. Mucho Gracias – jdr120

+0

Pourquoi est-ce pas la réponse acceptée – benPearce

0

Si vous liez la source de l'image à une propriété de support, la propriété de sauvegarde doit être une source d'image, pas une image.

Vous pouvez également utiliser ContentControl pour afficher l'image dans votre objet. Essayez ceci:

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