簡體   English   中英

如何從 XML 檢索值到 C# wpf listview

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM