2014-04-01 100 views
1

我知道這個問題已經被要求死亡,但我已經嘗試了很多我發現的建議答案,並且當我在VS2013中啓動WPF時組合框仍然沒有填充。在這裏。我呼籲People.xml一個XML文檔的格式是這樣的...ComboBox綁定到WPF中的XML

<?xml version="1.0" encoding="utf-8"?> 
<People> 
    <Person> 
    <personName>John Doe</personName> 
    <personEmail>[email protected]</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一般都比較陌生,所以我能得到的任何幫助都會很棒。

謝謝!

回答

0

至於我,最簡單的方法是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"> 
+0

我希望做的WPF的約束力,但我給這個一杆 – William

+0

嗯,你在哪裏存儲你的XML文件?試過你的代碼,它的作品。附加到項目的文件。 – user3449857

+0

我在項目中有一個DataSource文件夾,其中的XML是 – William