可能是重复问题:
WPF ListView - 如何以编程方式添加项?
在C#中如何实现?
ListViewItem
添加到ListView
中的方法:myListView.Items.Add(new ListViewItem { Content = "This is an item added programmatically." });
然而,我同意MrTelly的观点:这并不是必要的,你应该将ListView.ItemsSource
设置为某个集合,而不是直接操作ListView.Items
。
如果您提供更多关于您想要实现的细节,也许我们可以帮助您用WPF方式来完成它,这种方式起初可能并不容易,但从长远来看,它会变得更加容易。
直接将其添加到应用程序中的ListView并不一定是“WPF方式”。考虑以下内容:
public class BindableListViewModel
{
public IList<TypeOfObjectToDisplay> AllObjectsToDisplay;
public ICommand AddNewItemToList;
public BindableListViewModel()
{
AllObjectsToDisplay = new ObservableList<TypeOfObjectToDisplay>();
AddNewItemToList = new RelayCommand(AddNewItem(), CanAddNewItem());
}
public bool CanAddNewItem()
{
//logic that determines IF you are allowed to add
//For now, i'll just say that we can alway add.
return true;
}
public void AddNewItem()
{
AllObjectsToDisplay.Add(new TypeOfObjectToDisplay());
}
}
那么,在XAML中,我们需要做的就是将ListView的ItemsSource绑定到我们的AllObjectsToDisplay列表。这使我们能够将添加对象的依赖性与直接添加到ListView分离; 我们可以使用WPF的数据绑定优势来消除我们如何将业务对象添加到我们显示它们的UI容器上的直接依赖 - 这是一种非常有用的实践!
把ListView绑定到ObservableCollection上
当MrTelly正在进行时...
将ListView绑定到ObservableCollection上。
ObservableCollection<MyClassItem> lvList = new ObservableCollection<MyClassItem>();
myListview.ItemSource = lvList;
// Add an item
lvList.Add(new MyClassItem("firstname", "lastname"));
这样,当对集合进行更改时,它将自动更新用户界面。
如果您按照预期使用ListView,它将绑定到某种对象的基础列表,并且该类应实现INotifyChanged。在WPF中,您不直接向ListView添加/删除项目,而是处理绑定的列表结构,它会通知UI发生更改,然后巧妙地使用新项目重新绘制自身。
您可以使用附加属性动态地向 ListView 添加列。请查看 CodeProject 上的这篇文章,它详细解释了如何实现...