将xml元素传递到wpf中的列表框

时间:2011-08-17 09:11:40

标签: c# wpf xml listbox

我是xml以及WPF的新手。我有一个xml文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Listofattributes>
      <Attribute name="Patient Name" Value="John"/>
      <Attribute name="Sex" Value ="female"/>
</Listofattributes>

我试图将值加载到WPF的列表框中。请帮我解决一下我是怎么做到的。尝试阅读很多文章,但我无法弄明白。谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用XmlDataProvider来引用包含该文件的单独文件 数据如:

<XmlDataProvider x:Key=”OrgChartData” Source=”orgchart.xml” XPath=”Sex”/>

OR

<XmlDataProvider x:Key=”regions” XPath=”Regions”>
    <x:XData>
        <Regions xmlns=””>
        <Region RegionName=”East”>
            ...
        </Region>
        <Region RegionName=”Central”>
            ...
        </Region>
        </Regions>
    </x:XData>
</XmlDataProvider>

然后确定ListBox.ItemTemplate的DateTemplate,它将具有这样的Binding:

<DataTemplate DataType=”Region” ItemsSource=”{Binding XPath=*}”>
    <TextBlock Text=”{Binding XPath=@RegionName}” />
</DataTemplate>

你的ListBox.ItemsSource应该是=&#34; {StaticResource regions}&#34;。

如果你有单独的文件,你可以写下一行

<XmlDataProvider x:Key=”regions” Source=”Regions.xml” XPath=”Regions”/>

答案 1 :(得分:0)

或以编程方式:

    void form_Loaded(object sender, RoutedEventArgs e)
    {
        XElement xml = XElement.Parse(string.Join("", File.ReadAllLines("XMLFile1.xml")));

        foreach (XElement el in xml.Elements())
        {
            ListBoxItem item = new ListBoxItem();
            string name = el.Attribute("name").Value;
            string value = el.Attribute("Value").Value;
            item.Content = name + ": " + value;

            ListBox.Items.Add(item);
        }
    }