List<BitmapImage>
。我试图用ItemsControl在视图上显示列表,但图像不显示。奇怪的是,如果我使用的是Image标签,我可以访问同一个集合并获取要显示的图像。
<ItemsControl ItemsSource="{Binding Path=Images}" MinHeight="80">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Image Source="{Binding}" MinWidth="80" MinHeight="80" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<Image HorizontalAlignment="Left" Name="image1" Stretch="Uniform" VerticalAlignment="Top" Source="{Binding Path=Images[0]}" MinHeight="80" MaxHeight="200" />
请注意,它们都指向Images
。图像显示,ItemsControl保持为空。发生了什么事?
答案 0 :(得分:0)
您将通过使用ObservableCollection而不是List来解决此问题。 ItemsControl不会重新绑定List的更改通知。如果使用ObservableCollection,则无需担心显式调用List的更改通知。
我能够复制你的场景,只需使用ObservableCollection即可解决问题。至于原因:http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx
具体来说,请参阅备注部分中的这句话:
要在绑定客户端和数据源之间的绑定中发生更改通知,您的绑定类型应该是:实现INotifyPropertyChanged接口(首选)。为绑定类型的每个属性提供更改事件。不要两者兼顾。