如何找到刚刚添加到我的数据绑定 ListView 中的项目索引
How to find item index just added into my data binding ListView
我 ListView
绑定了我的 collection:
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; }
}
将项目添加到我的 collection:
MyData myData...
files.Add(myData);
listview.ItemsSource = files;
现在我想添加从列表中删除所选 file\files 的选项,因此我添加了右键单击菜单:
<ContextMenu>
<MenuItem Name="removeFileMenuItem" Header="Remove file"
Click="removeFileMenuItem_Click">
</MenuItem>
</ContextMenu>
因此,当将文件添加到我的 collection 时,我想获取项目索引,当我想删除该项目时,我将以这种方式使用它:
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);
}
}
只需使用ObservableCollection
class的Remove
方法即可。它找到您传入的对象并将其从集合中删除。
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);
}
}
您可以使用 SelectedItem
而不是使用 SelectedIndex
,因此您可以直接使用您选择的 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
。您的数据模型如下所示:
public MyData
{
public string FileName { get; set; }
public DateTime dateTime { get; set; }
public override bool Equals(object obj)
{
if (!(obj is MyData)) return false;
return this.FileName.Equals(
((MyData)obj).FileName);
}
}
我 ListView
绑定了我的 collection:
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; }
}
将项目添加到我的 collection:
MyData myData...
files.Add(myData);
listview.ItemsSource = files;
现在我想添加从列表中删除所选 file\files 的选项,因此我添加了右键单击菜单:
<ContextMenu>
<MenuItem Name="removeFileMenuItem" Header="Remove file"
Click="removeFileMenuItem_Click">
</MenuItem>
</ContextMenu>
因此,当将文件添加到我的 collection 时,我想获取项目索引,当我想删除该项目时,我将以这种方式使用它:
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);
}
}
只需使用ObservableCollection
class的Remove
方法即可。它找到您传入的对象并将其从集合中删除。
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);
}
}
您可以使用 SelectedItem
而不是使用 SelectedIndex
,因此您可以直接使用您选择的 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
。您的数据模型如下所示:
public MyData
{
public string FileName { get; set; }
public DateTime dateTime { get; set; }
public override bool Equals(object obj)
{
if (!(obj is MyData)) return false;
return this.FileName.Equals(
((MyData)obj).FileName);
}
}