以编程方式将ListViewItem添加到WPF中的Listview
可能重复:
WPF ListView – 如何以编程方式添加项目?
如何在C#中完成?
这是您将在代码中创建的ListViewItem
添加到ListView
:
myListView.Items.Add(new ListViewItem { Content = "This is an item added programmatically." });
但是,我同意MrTelly认为这不是必需的,您应该将ListView.ItemsSource
设置为某个集合,而不是直接操作ListView.Items
。
如果你给我们更多关于你想要完成什么的细节,也许我们可以帮助你以WPF方式做到这一点,这一开始并不总是那么简单,但从长远来看它会更容易。
我在这里问了完全相同的问题(并回答了我自己 – 我的代码中有问题)。 希望能帮助到你。
将它直接添加到App中的ListView不一定是“WPF方式”。 考虑一下:
public class BindableListViewModel { public IList AllObjectsToDisplay; public ICommand AddNewItemToList; public BindableListViewModel() { AllObjectsToDisplay = new ObservableList (); 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容器中 – 这是一个非常有用的实践!
(对不起,还不能发表评论)
正如MrTelly先生所做的那样……
将listview绑定到ObservableCollection
ObservableCollection lvList = new ObservableCollection (); myListview.ItemSource = lvList; // Add an item lvList.Add(new MyClassItem("firstname", "lastname"));
这样,当对集合进行更改时,它将自动更新UI。
如果您正在使用ListView,它将被绑定到某种Object的基础列表,该类应该实现INotifyChanged。 在WPF中,您不直接在ListView中添加/删除项目,处理绑定列表结构,并通知UI更改,然后使用新项目巧妙地重绘自身。
您可以使用附加属性动态地将列添加到ListView。 查看CodeProject上的这篇文章,它完全解释了……
WPF DynamicListView – 绑定到DataMatrix