在WPF中以编程方式将ListViewItem添加到Listview

时间:2009-03-20 07:23:19

标签: c# wpf listview

  

可能重复:
  WPF ListView - how to add items programmatically?

如何在C#中完成?

6 个答案:

答案 0 :(得分:6)

这是您在代码中为ListViewItem添加ListView的方法:

myListView.Items.Add(new ListViewItem { Content = "This is an item added programmatically." });

但是,我同意 MrTelly 这不应该是必要的,您应该将ListView.ItemsSource设置为某个集合,而不是直接操纵ListView.Items

如果你给我们更多关于你想要完成的事情的详细信息,我们可以帮助你以WPF的方式做到这一点,这一开始并不总是那么容易,但是从长远来看它很容易很多运行

答案 1 :(得分:4)

我问完全相同的问题HERE(并回答了我自己 - 我的代码中存在问题)。 希望能帮助到你。

答案 2 :(得分:4)

将它直接添加到App中的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容器中 - 这是一个非常有用的实践!

答案 3 :(得分:2)

(抱歉,还不能发表评论)

正如MrTelly先生所做的那样......

将listview绑定到ObservableCollection

ObservableCollection<MyClassItem> lvList = new ObservableCollection<MyClassItem>();
myListview.ItemSource = lvList;

// Add an item
lvList.Add(new MyClassItem("firstname", "lastname"));

这样,当对集合进行更改时,它将自动更新UI。

答案 4 :(得分:1)

如果您正在使用ListView,它将被绑定到某种Object的基础列表,该类应该实现INotifyChanged。在WPF中,您不直接从ListView添加/删除项目,您处理绑定列表结构,并通知UI更改,然后使用新项目巧妙地重绘自己。

答案 5 :(得分:0)

您可以使用附加属性动态地将列添加到ListView。查看 CodeProject 上的这篇文章,它完全解释了......

WPF DynamicListView - Binding to a DataMatrix