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

时间:2014-05-24 09:03:29

标签: c# wpf listview

我试图在运行时从c#编辑WPF listview项目,但我不知道该怎么做。在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中做到这一点?

1 个答案:

答案 0 :(得分:0)

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
         }
}