为了使用ItemsControl绑定图像源,我们需要具有哪种类型的列表。我有一个像这样的itemsControl:
<ItemsControl x:Name="championPicControl" Margin="10,0,516,63">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Image Source="{Binding}" Height="100" Width="100"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
当我这样做时,我遇到了错误:
List<BitmapImage> list = new List<BitmapImage>();
foreach(var i in summsList)
{
BitmapImage champ = new BitmapImage();
champ.BeginInit();
champ.UriSource = new Uri("Resources/championsSquare/" + i.championName + "_Square_0.png", UriKind.Relative);
champ.EndInit();
list.Add(champ);
}
championPicControl.ItemsSource = list;
什么类型的列表以及我应该怎么做以使其工作?
答案 0 :(得分:1)
后面的代码中的资源文件URI必须是完整的Resource File Pack URIs。所以你应该像
一样创建BitmapImagesvar champ = new BitmapImage(new Uri(
"pack://application:,,,/Resources/championsSquare/" + i.championName + "_Square_0.png"));
除此之外,不一定要使用BitmapImages列表。 WPF提供从string
,Uri
和byte[]
到ImageSource
类型(Image.Source
属性的类型)的自动类型转换。
所以你也可以将IEnumerable<string>
的资源URI字符串分配给ItemsControl的ItemsSource
属性。
championPicControl.ItemsSource = summsList.Select(
i => "pack://application:,,,/Resources/championsSquare/" + i.championName + "_Square_0.png");