如何将 XML 文件绑定到 ComboBox
本文关键字:绑定 ComboBox 文件 XML | 更新日期: 2023-09-27 18:36:00
我想制作一个Country ComboBox,如何将这个XML文件绑定到ComboBox,这是我的代码:
public class CountriesComboBox : ComboBox
{
public CountriesComboBox()
{
XDocument obj = XDocument.Load("countries.xml");
//DisplayMember = "countryiso";
//ValueMember = "countrycode";
DataSource = obj.Descendants("country").Select(x => new
{
countrycode = x.Attribute("code").Value,
countryiso = x.Attribute("name").Value
}).ToList();
}
}
这是我的 XMl 文件:
<countries>
<country code="AF" iso="4">Afghanistan</country>
<country code="AL" iso="8">Albania</country>
<country code="DZ" iso="12">Algeria</country>
<country code="AS" iso="16">American Samoa</country>
<country code="AD" iso="20">Andorra</country>
<country code="AO" iso="24">Angola</country> ....
我相信
你走对了路。
- 在组合框中创建一个代表您的国家/地区的类:国家/地区视图
- 把属性放在那里:代码、iso、名称等...
- 像您一样解析您的 XML 并创建国家/地区视图的实例。
- 将数据源设置为列表
- 相应地设置 displayMember 和 displayValue:每个都设置为类中的一个属性名称
- 为了获得更好的性能,缓存您的国家/地区列表(如果他们没有更改,我想这是一个非常不可变的列表)
从您的问题中,您当前正在尝试绑定到匿名类型。我从来没有尝试过,我宁愿有一个命名类来满足这个需求。
我正在为 WPF 做这件事。
comboBox1.ItemsSource = xdoc.Root.Descendants("country").Select(x => x.Value);
试试这个:-
public class CountriesComboBox : ComboBox
{
public CountriesComboBox()
{
XDocument obj = XDocument.Load("countries.xml");
//DisplayMember = "countryiso";
//ValueMember = "countrycode";
DataSource = obj.Descendants("country").Select(x => new
{
countrycode = x.Attribute("code").Value,
countryiso = x.Attribute("iso").Value
}).ToList();
}
}
使用 x.Attribute("iso").Value
而不是 x.Attribute("name").Value
。