我有一个应该基于用户输入填充的ListView。 ListView绑定到我的ObservableCollection。当用户添加一个项目时,它会插入,但是当我添加另一个项目后,前一个项目会立即被删除,并替换为最新添加的项目(使列表项从1代替2)。我该如何解决?
代码:
public ObservableCollection<string> Items { get; set; }
private void Button_Clicked(object sender, EventArgs e)
{
Items = new ObservableCollection<string>
{
TxtEntry.Text
};
MyListView.ItemsSource = Items;
}
答案 0 :(得分:3)
这是因为您每次都在创建一个新集合。
像这样更改代码:
public ObservableCollection<string> Items { get; set; } = new ObservableCollection<string>();
public YourConstructor()
{
MyListView.ItemsSource = Items;
}
private void Button_Clicked(object sender, EventArgs e)
{
Items.Add(TxtEntry.Text);
}
在这里看到的是第一次创建属性时实例化了集合。
然后,在对象的构造函数中,将ItemSource
的{{1}}设置为ListView
,然后每当单击按钮时,只需添加项目,而不是创建一个每次都有新收藏。
此外,您无需每次都设置ObservableCollection
。由于它是ItemSource
,因此ObservableCollection
会被通知集合中的任何更改。
答案 1 :(得分:1)
您应该将其添加到列表中,而不是重新创建列表:
public ObservableCollection<string> Items { get; set; }
private void Button_Clicked(object sender, EventArgs e)
{
if(Items == null)
{
Items = new ObservableCollection<string>
{
TxtEntry.Text
};
}
else {
Items.Add(TxtEntry.Text);
}
MyListView.ItemsSource = Items;
}