刷新按钮以更新xml绑定的列表框
本文关键字:列表 绑定 xml 按钮 更新 刷新 | 更新日期: 2023-09-27 18:25:25
我有一个列表框,它绑定到xml数据源。我想创建一个刷新列表框的按钮。
listbox1.refresh不起作用。
Thaks
private void LoadXML()
{
presets.Clear();
if(System.IO.File.Exists(GetXMLFileName()))
{
XDocument xDoc = XDocument.Load(GetXMLFileName());
XElement xMain = xDoc.Element("Main");
foreach(var xPreset in xMain.Elements())
{
Preset preset = new Preset(xPreset);
presets.Add(preset);
}
}
else
{
for (int i = 0; i < maxPresets; i++)
presets.Add(new Preset() { Id = i });
}
listBox1.Items.Clear();
listBox1.DataSource = presets;
listBox1.DisplayMember = "name";
}
看看这一行:
listBox1.DataSource = presets;
尽管您正在设置DataSource
,但在第一次调用LoadXML()
之后,您将其设置为与已具有的值相同的值。由于集合引用是相同的,因此分配实际上是无操作的:底层数据源没有更改,因此列表框不会刷新。最简单的修复方法是在将DataSource
设置为presets
之前将其重置为null
。不过,理想情况下,您应该简单地将数据源绑定到ObservableCollection
或其他支持更改通知的集合。
此外,正如@user2880486所指出的,您不应该同时使用Items
和DataSource
;它们被设计为相互排斥。使用其中一个,但不能同时使用。