如何从XML检索值到C#wpf listview
我有这样一个XML:如何从XML检索值到C#wpf listview,c#,xml,wpf,xaml,listview,C#,Xml,Wpf,Xaml,Listview,我有这样一个XML: <ConfData> <Person> <AgentInfo> <skillLevels> <SkillLevel> <skillDBID value="101" /> <level value="10" /> </SkillLevel> <SkillLevel&
<ConfData>
<Person>
<AgentInfo>
<skillLevels>
<SkillLevel>
<skillDBID value="101" />
<level value="10" />
</SkillLevel>
<SkillLevel>
<skillDBID value="103" />
<level value="10" />
</SkillLevel>
<SkillLevel>
<skillDBID value="106" />
<level value="10" />
</SkillLevel>
<SkillLevel>
<skillDBID value="110" />
<level value="10" />
</SkillLevel>
<SkillLevel>
<skillDBID value="111" />
<level value="10" />
</SkillLevel>
<SkillLevel>
<skillDBID value="112" />
<level value="10" />
</SkillLevel>
<CfgSkillLevel>
<skillDBID value="113" />
<level value="0" />
</CfgSkillLevel>
</skillLevels>
</AgentInfo>
</Person>
</ConfData>
以及listview的my.xaml代码:
<ListView x:Name="AInfoLv">
<ListView.View>
<GridView>
<GridViewColumn x:Name="LabelColumn" Header="Label" Width="100" DisplayMemberBinding="{Binding Path=Label}"/>
<GridViewColumn x:Name="ValueColumn" Header="Value" Width="130" DisplayMemberBinding="{Binding Path=Value}"/>
</GridView>
</ListView.View>
</ListView>
如何检索所有skillDBID值和级别值并在listview中相应地显示它们,这意味着skillDBID值将位于Label列,级别值将位于Value列?我建议您将xml文件转换为C#中的对象(如Dictionary)然后用xaml绑定对象。要访问xaml文件中的属性,需要使用@符号
XPath=skillDBID/@value
这个XAML适用于示例XML文件
<Window.Resources>
<XmlDataProvider Source='ConfData.xml'
x:Key='ConfXmlSource'
XPath="ConfData" />
</Window.Resources>
<Grid DataContext='{Binding Source={StaticResource ConfXmlSource}}'>
<ListView x:Name="AInfoLv"
Grid.ColumnSpan='1'
ItemsSource='{Binding XPath=/ConfData/Person/AgentInfo/skillLevels/SkillLevel}'>
<ListView.View>
<GridView>
<GridViewColumn x:Name="LabelColumn"
Header="Label"
Width="100"
DisplayMemberBinding="{Binding XPath=skillDBID/@value}" />
<GridViewColumn x:Name="ValueColumn"
Header="Value"
Width="130"
DisplayMemberBinding="{Binding XPath=level/@value}" />
</GridView>
</ListView.View>
</ListView>
</Grid>
屏幕截图
您对此进行过研究吗?这里有数百个例子……嗨,沃尔特·里彻,谢谢你的解决方案。我可以知道如何将XmlDataProvider源代码从代码传递到.xaml吗?因为我是通过代码中的特定过程来获取xml的。我添加了一个在代码中设置XmlDataProvider.Document属性的示例。
var provider = new XmlDataProvider();
var xmlFile = new XmlDocument();
xmlFile.Load(@"..\..\yourdoc.xml");
provider.Document = xmlFile;
provider.XPath = "/ConfData";
AInfoLv.DataContext = provider;