WPF - listbox binden an eine ObservableCollection von Bildern
Dieser sollte extrem einfach, aber ich jut, kann es nicht zu funktionieren...
CustomItem ist eine Klasse, die hat eine Eigenschaft namens " ThumbnailImage
Ich bin versucht zu binden eine ObservableCollection, um ein Listenfeld zur Anzeige von Bildern. Das ist mein code:
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>
Dem CustomItem sieht wie folgt aus
public class CustomItem
public Image ThumbnailImage { get; set; }
}
Nichts ist, zeigt sich in der ListBox, wenn ich es laufen lasse. Irgendeine Idee was falsch läuft? Danke!
-- Edit 1 -- ich denke, was ich sagen kann, von Debuggen ist, dass Schrank.Elemente.Count == 0 wenn AvailableItems.Count == 5. Ich habe versucht, das hinzufügen ItemsSource="{Binding AvailableItems, UpdateSourceTrigger=PropertyChanged}" aber das hat nicht geholfen 🙁
-- Edit 2 --
War ich wie folgt in meiner XAML -
DataContext="{Binding RelativeSource={RelativeSource Self}}"
statt, als ich die folgenden in der codebehind, hat alles geklappt:
DataContext = this;
- Ich hatte ein ähnliches problem wie du. Obwohl meine Bindung gearbeitet, das ContentControl zeigte eine Zeichenfolge, die den Bild-Typ anstatt zu zeigen, das Bild. Ich fand heraus, dass das ersetzen von <ContentControl Content="{Binding ThumbnailImage}"/> durch <Image Source="{Binding ThumbnailImage}"/> hat den trick. Wenn jemand stolpert auf diese, das könnte Ihnen helfen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den code, den Sie geschrieben scheint in Ordnung, also das problem muss etwas anderes sein
ListBox
die richtige DataContext so kann es richtig bindenAvailableItems
?Image
im code?Beispiel
Klebte ich den code in ein Beispiel-Projekt, und es funktionierte Prima, es hochgeladen hier
http://www.mediafire.com/download.php?m99kv1uglrr31j9
Vergleichen Sie Ihre version, um zu sehen, was Sie fehlen
Ich denke, dass Sie entweder:
1)nicht initialisiert werden Ihr ObservableCollection
2)Habe nicht den DataContext des Fensters, oder
3)Sie bereiten Ihre Bilder nach dem hinzufügen Ihre CustomItem an die ObservableCollection-und Sie haben noch nicht implementiert INotifyPropertyChanged auf Ihre Klasse CustomItem.
Ihren code plus-dies scheint für mich arbeiten: