将XmlDataProvider绑定到ListView时的单行

时间:2014-04-25 21:04:42

标签: c# xml wpf

我想在ListView中显示XmlData。 XmlDataProvider已正确填充,但Listview仅显示第一行。我需要更改什么来显示XmlDocument中的所有行?

<Window.Resources>
    <XmlDataProvider x:Key="xmlData"/>
</Window.Resources>
<DockPanel>
    <ListView Padding="4">
        <ListView.ItemsSource>
            <Binding Source="{StaticResource xmlData}" XPath="*"/>
        </ListView.ItemsSource>
        <ListView.View>
            <GridView >
                <GridViewColumn Header="Info" Width="256" DisplayMemberBinding="{Binding XPath=Message}"/>
            </GridView>
        </ListView.View>
    </ListView>
</DockPanel>

在代码背后:

private void RefreshList(XmlDocument doc)
{
    XmlDataProvider provider = (XmlDataProvider)FindResource("xmlData");
    provider.Document = doc;
    provider.Refresh();
}

1 个答案:

答案 0 :(得分:0)

好的,所以我这样解决了:

  1. 将XPath添加到XmlDataProvider
  2. 使用Path = InnerText而不是XPath
  3. 见下文摘要。

    <Window.Resources>
        <XmlDataProvider x:Key="xmlData" XPath="//Prototype"/>
    </Window.Resources>
    <DockPanel>
        <ListView>
            <ListView.ItemsSource>
                <Binding Source="{StaticResource xmlData}" XPath="Message"/>
            </ListView.ItemsSource>
            <ListView.View>
                <GridView >
                    <GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Path=InnerText}"/>
                </GridView>
            </ListView.View>
        </ListView>
    </DockPanel>