在运行时从c#编辑WPF ListView项

本文关键字:WPF ListView 编辑 运行时 | 更新日期: 2023-09-27 18:04:48

我试图在运行时从c#编辑WPF列表视图项,但我不知道如何做到这一点。在WindowsForms中,我使用:

foreach (ListViewItem item in listView1.Items)
{
    if (item.SubItems[2].Text == id)
    {
        if (pingtime != 0)
            item.SubItems[6].Text = pingtime.ToString();
        else item.SubItems[6].Text = "999";
    }
}

,但这不起作用,因为在WPF中没有Item.SubItems[]。我需要做的是找到包含正确id的项目,然后用新值编辑项目的第6列。我如何在WPF中做到这一点?

在运行时从c#编辑WPF ListView项

WPF与WinForms的绑定方式不同。对于列表视图,数据源将是一个ObservableCollection。类型T是您的自定义类类型。通过XAML代码,在ListView上使用数据模板,您可以描述如何为每个数据项显示自定义类类型的属性。

如果要更新特定项的值,需要更改集合,则集合应实现INotifyPropertyChanged接口

代码:

internal class MyViewModel
{
    public ObservableCollection<Employee> Employees= new ObservableCollection<Employee>();
    // Populate Employee
}
public class MyWindow
{
    public MyWindow()
    {
        DataContext = new MyViewModel();
    }
}

XAML:

<ListView ItemsSource={Binding Path=Employee, Mode=OneWay}>
    <ListView.DataTemplate>
        <Label Content={Binding Path=EmployeeName, Mode=OneWay} />
     </ListView.DataTemplate>
</ListView>

如果你仍然想使用后台代码访问,你可以试试这个,

for (int i = 0; i < listView1.Items.Count; i++)
{
         if (((yourclass)listView1.Items[i]).id== "6")
         {
                //change it here
         }
}