使用 ObservableCollection 时更新列表框
本文关键字:列表 更新 ObservableCollection 使用 | 更新日期: 2023-09-27 17:55:12
我有一个绑定到列表框的 ObservableCollection,如下所示:
string[] selection = comboEmail.GetItemText(comboEmail.SelectedItem).Split(',');
Employee add = new Employee(Convert.ToInt32(selection[0]), selection[1], selection[2], selection[3]);
displayEmp.Add(add);
listEmail.DataSource = displayEmp;
它将数据添加到列表框(列表电子邮件),但是,删除后如何更新它。这是我到目前为止尝试过的:
int indexRemoval = listEmail.SelectedIndex;
displayEmp.RemoveAt(indexRemoval);
listEmail.DataSource = displayEmp;
//listEmail.Refresh();
但它不起作用。用户单击删除按钮后,我将如何更新列表?
您需要设置ItemSource
而不是数据源。这假定您还设置了DataContext
。
listEmail.ItemSource = displayEmp;
由于您已将displayEmp
定义为 ObservableCollection
,因此更新应自动反映。
编辑:下面是一个示例,供您参考,使用 BindingList 自动刷新 UI:
public BindingList<Data> DataList { get; set; }
public void Load()
{
DataList = new BindingList<Data>
{
new Data
{
Key = "Key1",
Value = "Value1"
},
new Data
{
Key = "Key2",
Value = "Value2"
},
new Data
{
Key = "Key3",
Value = "Value3"
}
};
listBox1.DataSource = DataList;
listBox1.DisplayMember = "Value";
listBox1.ValueMember = "Key";
}
public class Data
{
public string Key { get; set; }
public string Value { get; set; }
}
private void button1_Click(object sender, EventArgs e)
{
DataList.RemoveAt(1);
}