无法将 xml 数据获取到 wpf 应用程序的组合框中
Cannot get xml data into comboBox for wpf application
我是一个新手程序员,想了解更多,但一直卡在这个问题上。我从未在我的 UI 中引用外部文件来获取数据。我无法更新我的组合框数据以包含 projects>project 的编号。不太确定从这里去哪里。
C# 在 MainWindow.xaml 编辑器中双击组合框:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
}
private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
XDocument doc = XDocument.Load(@"C: \Users\kaleh\source\repos\Atlas\output.xml");
var numbers = from n in doc.Root.Elements("project").Elements("number") select n.Value;
this.comboBox1.ItemsSource = numbers;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
comboBox1_SelectionChanged(this.comboBox1, null);
}
}
XML:我试图只将项目编号导入组合框,我尝试在 XAML 中绑定但无法正常工作。我比较熟悉C#,所以我想保留在C#中。
<?xml version="1.0" encoding="UTF-8"?>
<company>
<projects>
<project>
<number>2021-005-00</number>
<team>
<member department="mech">Harper, K</member>
<member department="pm">Logan, C</member>
</team>
</project>
<project>
<number>2021-004-00</number>
<team>
<member department="mech">Gagliardi, G</member>
<member department="arch">Terranova, N</member>
</team>
</project>
</projects>
</company>
我的组合框仍然是空白的,我不知道从这里去哪里。
这里有两件事。
一个:
不要在事件 selectionchanged
中加载组合框。
select 应该有一些数据来触发 selectionchanged
。
将它移动到 window 构造函数或一些更好的地方,但是在你的控件初始化之后(在调用 InitializeComponent
之后)。示例如下。
public MainWindow()
{
InitializeComponent();
XDocument doc = XDocument.Load(@"C:\Users\XXXXXXX\Desktop\data\sample.xml");
var numbers = from n in doc.Descendants("project").Elements("number") select n.Value;
this.comboBox1.ItemsSource = numbers;
}
第二个:
更改 LINQ 查询。
无需查看根元素,只需检查 Descendants
var numbers = from n in doc.Descendants("project").Elements("number") select n.Value;
我是一个新手程序员,想了解更多,但一直卡在这个问题上。我从未在我的 UI 中引用外部文件来获取数据。我无法更新我的组合框数据以包含 projects>project 的编号。不太确定从这里去哪里。
C# 在 MainWindow.xaml 编辑器中双击组合框:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
}
private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
XDocument doc = XDocument.Load(@"C: \Users\kaleh\source\repos\Atlas\output.xml");
var numbers = from n in doc.Root.Elements("project").Elements("number") select n.Value;
this.comboBox1.ItemsSource = numbers;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
comboBox1_SelectionChanged(this.comboBox1, null);
}
}
XML:我试图只将项目编号导入组合框,我尝试在 XAML 中绑定但无法正常工作。我比较熟悉C#,所以我想保留在C#中。
<?xml version="1.0" encoding="UTF-8"?>
<company>
<projects>
<project>
<number>2021-005-00</number>
<team>
<member department="mech">Harper, K</member>
<member department="pm">Logan, C</member>
</team>
</project>
<project>
<number>2021-004-00</number>
<team>
<member department="mech">Gagliardi, G</member>
<member department="arch">Terranova, N</member>
</team>
</project>
</projects>
</company>
我的组合框仍然是空白的,我不知道从这里去哪里。
这里有两件事。
一个:
不要在事件 selectionchanged
中加载组合框。
select 应该有一些数据来触发 selectionchanged
。
将它移动到 window 构造函数或一些更好的地方,但是在你的控件初始化之后(在调用 InitializeComponent
之后)。示例如下。
public MainWindow()
{
InitializeComponent();
XDocument doc = XDocument.Load(@"C:\Users\XXXXXXX\Desktop\data\sample.xml");
var numbers = from n in doc.Descendants("project").Elements("number") select n.Value;
this.comboBox1.ItemsSource = numbers;
}
第二个:
更改 LINQ 查询。
无需查看根元素,只需检查 Descendants
var numbers = from n in doc.Descendants("project").Elements("number") select n.Value;