如何找到刚刚添加到我的数据绑定ListView中的项索引

时间:2015-07-04 17:00:50

标签: wpf listview observablecollection

我与我的收藏品ListView绑定:

private ObservableCollection<MyData> files{ get; set; }

<ListView Name="listview" ItemsSource="{Binding files}" >

public MyData
{
   public string FileName { get; set; }
   public DateTime dateTime { get; set; }
   public int index { get; set; }
}

将项目添加到我的收藏中:

MyData myData...
files.Add(myData);
listview.ItemsSource = files;

现在我想添加选项以从我的列表中删除所选文件\文件,所以我添加了右键菜单:

<ContextMenu>
    <MenuItem Name="removeFileMenuItem" Header="Remove file"
             Click="removeFileMenuItem_Click">
    </MenuItem>
</ContextMenu>

因此,当我将文件添加到我的集合中时,我想获取项目索引,当我想删除此项目时,我将以这种方式使用它:

private void removeFileMenuItem_Click(object sender, RoutedEventArgs e)
{
      if (listview.SelectedIndex == -1)
          return;
      MyData myData = listview.SelectedItem as MyData;
      if (myData != null)
      {
         file.RemoveAt(myData.index);
      }
}

2 个答案:

答案 0 :(得分:0)

只需使用Remove类的ObservableCollection方法即可。它会找到您传入的对象并将其从集合中删除。

    private void removeFileMenuItem_Click (object sender, RoutedEventArgs e)
    {
        if (listview.SelectedIndex == -1)
            return;
        MyData myData = listview.SelectedItem as MyData;
        if (myData != null)
        {
            file.Remove (myData);
        }
    }

答案 1 :(得分:0)

您可以使用public/vendor/vendor.js public/vendor/vendor.css ,而不是使用SelectedIndex,因此您可以直接使用所选的SelectedItem,然后将其删除,他的方法将如下所示:

data model

如果您以这种方式使用,则不需要private void removeFileMenuItem_Click (object sender, RoutedEventArgs e) { var myData = listview.SelectedItem as MyData; if (myData != null) files.Remove (myData); } property,您可以实施index方法来通知模型的相等规则,在这种情况下我会考虑您的规则是Equals FileName。您的数据模型如下所示:

property