【问题标题】:ComboBox Binding to XML in WPFWPF 中的 ComboBox 绑定到 XML
【发布时间】:2014-04-01 15:32:52
【问题描述】:

我知道这个问题已经被问死了,但是我已经尝试了很多我发现的建议答案,当我在 VS2013 中启动 WPF 时,组合框仍然没有填充。就这样吧。我有一个名为 People.xml 的 XML 文档,其格式如下...

<?xml version="1.0" encoding="utf-8"?>
<People>
  <Person>
    <personName>John Doe</personName>
    <personEmail>someone@yahoo.com</personEmail>
    <personReports>List of reports they get go here.</personReports>
</Person>

在应用程序的 App.xml 部分中,我将其作为资源:

<XmlDataProvider x:Key="People" Source="\DataSources\People.xml" XPath="People" IsInitialLoadEnabled="True" />

然后,在组合框的 XAML 中,我将其列为:

<ComboBox x:Name="employeeNameBox" IsReadOnly="False" HorizontalAlignment="Left" IsEditable="True" ItemsSource="{Binding Source={StaticResource People}, XPath=./Person/personName}">

我试图用 XML 文档中的所有 personName 元素填充组合框。

再次,我尝试了几种不同的方法来尝试加载它,但组合框总是空着。总的来说,我对数据绑定结构和 WPF 比较陌生,所以我能得到的任何帮助都会很棒。

谢谢!

【问题讨论】:

    标签: c# xml wpf xaml data-binding


    【解决方案1】:

    对我来说,最简单的方法是XmlSerializer

    public class Person
    {
        public string personName;
        public string personEmail;
        public string personReports;
    }
    
    public class People
    {
        [XmlElement("Person")]
        public List<Person> Persons;
    }
    

    加载数据:

    var people = (People)new XmlSerializer(typeof(People)).Deserialize(stream);
    employeeNameBox.ItemsSource = people.Persons;
    

    组合框代码:

    <ComboBox x:Name="employeeNameBox" IsReadOnly="False" HorizontalAlignment="Left" IsEditable="True" DisplayMemberPath="personName">
    

    【讨论】:

    • 我希望在 WPF 中进行绑定,但我会试一试
    • 嗯,你的 xml 文件存储在哪里?试过你的代码,它可以工作。附加到项目的文件。
    • 我在 XML 所在的项目中有一个 DataSource 文件夹
    • 可能是您的文件有错误的BuildAction 属性值。它应该设置为Resource
    猜你喜欢
    • 2011-06-25
    • 2011-03-07
    • 2010-10-24
    • 2013-04-18
    • 2014-05-25
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多