2017-03-02 41 views
1

私は自分のアイテムをリストビューに追加しようとしています。ここに私のクラスです。wpfアプリケーションでlistviewにアイテムを追加するには?

FindFace.Show.Response response = await _api.Show_Face(lb_GalleryList.SelectedItem.ToString());   
    if (response.results.Count != 0) 
    { 
     List<FaceImages> faceImages = new List<FaceImages>(); 
     for (int i = 0; i < response.results.Count; i++) 
     { 
     faceImages.Add(new FaceImages() { Face_id = response.results[i].person_id.ToString(), Face_thumbnail = LoadImage(response.results[i].thumbnail) }); 
     } 
     lv_Photos.ItemsSource = faceImages;      
    } 

faceImagesでは、次のようになります。 enter image description here

また、私のxamlファイルは次のようになります。

<ListView x:Name="lv_Photos" HorizontalAlignment="Stretch" VerticalAlignment="Top"> 
       <ItemsControl.ItemsPanel> 
        <ItemsPanelTemplate> 
         <UniformGrid Columns="5" HorizontalAlignment="Stretch" /> 
        </ItemsPanelTemplate> 
       </ItemsControl.ItemsPanel> 
       <DataTemplate> 
        <StackPanel Orientation="Vertical" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> 
         <Image Source="{Binding Face_thumbnail}" HorizontalAlignment="Stretch" VerticalAlignment="Top" Stretch="UniformToFill" /> 
         <TextBlock Text="{Binding Face_id}" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" /> 
        </StackPanel> 
       </DataTemplate> 
      </ListView> 

ただし、ここではItemsImagesにfaceImagesを挿入しようとしましたが、

lv_Photos.ItemsSource = faceImages; 

アプリケーションが

An exception of type 'System.InvalidOperationException' occurred in PresentationFramework.dll but was not handled in user code 

Additional information: Items collection must be empty before using ItemsSource. 

を与える私は私のリストビュー要素にfaceImagesクラスを渡すことができる方法を理解していませんでし。

+0

あなたはListView.Itemsで何かを持っている(ので、例えば、手動でXAMLでのListViewにいくつかの項目を追加したり、何とか前にコード内のアイテムのコレクションに何かを追加しました)、あなたはのItemsSourceを使用することはできませんので、理由ItemsとItemsSourceは相互に排他的です。 – Evk

+0

@エヴァーク私はこの場合の解決策を見つけようとしており、必要に応じてすべてを書き直すことができます。 – goGud

+0

は、ObservableCollectionをitemSourceとしてリストではなく、バインドで更新しないでください – MikeT

答えて

2

DataTemplateを子供用アイテムとしてListViewに偶然追加しました。そのため、Itemsコレクションは空ではなく、ItemsSourceは相互に排他的であるため、使用できません。代わりに、ListView.ItemTemplateを使用します。

<ListView x:Name="lv_Photos" 
      HorizontalAlignment="Stretch" 
      VerticalAlignment="Top"> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <UniformGrid Columns="5" 
         HorizontalAlignment="Stretch" /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Vertical" 
         VerticalAlignment="Stretch" 
         HorizontalAlignment="Stretch"> 
       <Image Source="{Binding Face_thumbnail}" 
         HorizontalAlignment="Stretch" 
         VerticalAlignment="Top" 
         Stretch="UniformToFill" /> 
       <TextBlock Text="{Binding Face_id}" 
          HorizontalAlignment="Stretch" 
          VerticalAlignment="Bottom" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 
+0

あなたは素晴らしいです..私はそれを逃した方法を知りません。ありがとうございます.. – goGud

+0

@Evk申し訳ありませんが間違った場所にコメント – MikeT

関連する問題