如何在wpf应用程序的listview中添加项目?

时间:2017-03-02 10:11:49

标签: c# wpf listview

我正在尝试在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>

但是当我尝试将faceImages放到ItemsSource中时;

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类传递给listview元素。

1 个答案:

答案 0 :(得分: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>