图像类型上的ItemsControl时出错

时间:2016-06-29 23:29:48

标签: c# wpf

为了使用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;

什么类型的列表以及我应该怎么做以使其工作?

1 个答案:

答案 0 :(得分:1)

后面的代码中的资源文件URI必须是完整的Resource File Pack URIs。所以你应该像

一样创建BitmapImages
var champ = new BitmapImage(new Uri(
    "pack://application:,,,/Resources/championsSquare/" + i.championName + "_Square_0.png"));

除此之外,不一定要使用BitmapImages列表。 WPF提供从stringUribyte[]ImageSource类型(Image.Source属性的类型)的自动类型转换。

所以你也可以将IEnumerable<string>的资源URI字符串分配给ItemsControl的ItemsSource属性。

championPicControl.ItemsSource = summsList.Select(
    i => "pack://application:,,,/Resources/championsSquare/" + i.championName + "_Square_0.png");