【问题标题】:Cannot get xml data into comboBox for wpf application无法将 xml 数据放入 wpf 应用程序的组合框
【发布时间】:2021-05-01 23:00:04
【问题描述】:

我是一个试图了解更多信息的菜鸟程序员,但遇到了这个问题。我从未在我的 UI 中为数据引用外部文件。我无法更新我的组合框数据以包含项目>项目的编号。不太确定从这里去哪里。

双击 MainWindow.xaml 编辑器中的组合框的 C#:

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>

我的组合框仍然是空白的,我不知道从哪里开始。

【问题讨论】:

    标签: c# wpf data-binding combobox


    【解决方案1】:

    这里有两件事。

    一个:

    不要在事件selectionchanged 中加载您的组合框。 应该有一些数据可以选择触发selectionchanged。 将它移动到窗口构造函数或更好的地方,但是在你的控件被初始化之后(在调用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;
    

    【讨论】:

    • 非常感谢!这对我来说更有意义。
    猜你喜欢
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 2013-04-29
    相关资源
    最近更新 更多