我与我的收藏品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);
}
}
答案 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