允许用户将多个项目添加到ObservableCollection C#

时间:2018-06-25 11:15:38

标签: c# xamarin.forms observablecollection

我有一个应该基于用户输入填充的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;
        }

2 个答案:

答案 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;
}