2016-06-29 4 views
0

ItemsControlを使用して画像のソースをバインドするには、どのような種類のリストが必要ですか。私はこのようなのItemsControlを持っている:ItemsControl on Image Typeのエラー

<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

どのようなエラーが表示されますか? – FishStix

+0

あなたのコードに2つの潜在的な問題があります: 組み込みリソース用UriKind.Absolute 'pack:// application:,,,/[YourAssemblyName];コンポーネント/リソース/ {Y ourImageName}。 ObservableCollectionリストの代わりに – Anton

答えて

1

コードビハインドのリソースファイルURIは、完全なResource File Pack URIsでなければなりません。 BitmapImagesのリストを使用して厳密には必要ではないことのほかだから、

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

ようBitmapImagesを作成する必要があります。 WPFは、string,Uriおよびbyte[]からImageSourceImage.Sourceプロパティの型)への自動型変換を提供します。

したがって、IEnumerable<string>にリソースURI文字列をItemsControlのItemsSourceプロパティに割り当てることもできます。

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