【发布时间】:2020-08-24 11:18:19
【问题描述】:
我正在使用 c# 在 Visual Studio WPF 中制作一个带有一些复选框和过滤选项的小应用程序。
对于我的数据,我有一个包含各种位置的 XML 文档,如下所示:
<Cities>
<Location>
<Name>Gava</Name>
<City>Barcelona</City>
<Community>Catalonia</Community>
<Checked>False</Checked>
</Location>
<Location>
<Name>Castelldefels</Name>
<City>Barcelona</City>
<Community>Catalonia</Community>
<Checked>False</Checked>
</Location>
<Location>
<Name>San Juan</Name>
<City>Alicante</City>
<Community>Valencia</Community>
<Checked>False</Checked>
</Location>
<Location>
<Name>Benidorm</Name>
<City>Alicante</City>
<Community>Valencia</Community>
<Checked>False</Checked>
</Location>
<Location>
<Name>Sagunto</Name>
<City>Valencia</City>
<Community>Valencia</Community>
<Checked>False</Checked>
</Location>
</Cities>
有了这个,我用这个函数填充了一个带有复选框的列表视图:
XDocument xdoc = XDocument.Load("Data.xml");
private void PopulateLocationList()
{
foreach(var elem in xdoc.Descendants("Location"))
{
ListView1.Items.Add(new CheckBox { Content = elem.Element("Name").Value, IsChecked = Convert.ToBoolean(elem.Element("Checked").Value) });
}
}
我现在想做的是用 City 名称填充 ComboBox,但 City 值只出现一次。
我尝试了上面相同的功能,更改了一些名称,如下所示:
foreach(var elem in xdoc.Descendants("Location"))
{
ComboBox1.Items.Add(new ComboBoxItem { Content = elem.Element("City").Value });
}
但这样做是获取所有City 值并填充ComboBox。我想要的是如果有一个重复的值(例如两个巴塞罗那),只在组合框中显示一个。我只是想不出该怎么做。
提前感谢任何回复的人。我仍然是所有这些编程事物的初学者,没有接受过正式培训,只是按照互联网上的教程进行操作,有时会变得像这样很棘手。
编辑:我知道我可以在设计器中手动执行此操作,甚至可以在我的 xml 文档中为城市使用单独的部分,但我想这样做以便我可以重复使用一些 i 元素,例如 Listview 和 Comboboxes
【问题讨论】:
标签: c# xml wpf visual-studio