[英]How to retrieve values from XML to C# wpf listview
我有一個這樣的 XML:
<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>
我的列表視圖的 .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>
如何檢索所有技能DBID 值和級別值並相應地在列表視圖中顯示它們,這意味着技能DBID 值將位於標簽列而級別值將位於值列?
我建議您將您的 xml 文件轉換為 C#(如字典)中的對象,然后將您的對象與 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
var provider = new XmlDataProvider();
var xmlFile = new XmlDocument();
xmlFile.Load(@"..\..\yourdoc.xml");
provider.Document = xmlFile;
provider.XPath = "/ConfData";
AInfoLv.DataContext = provider;
截屏
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.