试图从xml文件中填充winrt xaml中的组合框

问题描述:

我想使用xml文件中的数据填充下拉列表我确定我关闭了,因为intellisense显示的是XML文件中的数据,但是当我尝试将其绑定到组合框我得到每个具有数据类型但不包含数据的条目。试图从xml文件中填充winrt xaml中的组合框

public void PopPrograms() 
{ 
    //string picprgrmsXMLPath = Path.Combine(Package.Current.InstalledLocation.Path, "Assets/PicPrograms.xml"); 
    string picprgrmsXMLPath = Path.Combine(Windows.Storage.ApplicationData.Current.RoamingFolder.Path, "PicPrograms.xml"); 
    //string picprgrmsXMLPath = @"C:\temp\PicPrograms.xml"; 
    XDocument loadedData = XDocument.Load(picprgrmsXMLPath); 

    var data = from query in loadedData.Descendants("Node") 
    select new PicPrograms 
    { 
     //ProgramID = (string)query.Element("pID"), 
     ProgramName = (string)query.Element("pName"), 
    }; 
    cbProgram.ItemsSource = data; 

,现在这里是我的XAML:

<ComboBox x:Name="cbProgram" ItemsSource="{Binding}" HorizontalAlignment="Left" 
      Margin="55,115,0,0" VerticalAlignment="Top" Width="215" Height="32" 
      SelectionChanged="cbProgram_SelectionChanged" Grid.RowSpan="2"/> 

我敢肯定,我失去了一些东西在这里,但就是不知道它是什么。

这里是XML文档的一个片段:

<Programs> 
    <Node> 
    <pID>9930FA1A-A59E-4F78-8AFF-2E07AD4C1CD8</pID> 
    <pName>Black and Gold</pName> 
    </Node> 
    <Node> 
    <pID>23B4263C-4BF2-4EC3-AD99-17BCD6301189</pID> 
    <pName>Darren Hawkins Pic Review</pName> 
    </Node> 

得到的组合框显示了每个元素同样的事情:

CameraCapture.CapturePhoto+PicProgram 
+0

请把你的'ToString'方法'PicProgram'和你的'ItemTemplate' – csharpwinphonexaml 2014-09-29 18:21:33

+0

对不起,不知道你在说什么 – Lyle 2014-09-29 18:25:00

+0

你有'覆盖字符串ToString()'在'PicProgram'吗? – csharpwinphonexaml 2014-09-29 18:34:23

为了告诉ComboBox控制显示什么,你需要设置其DisplayMemberPathItemTemplate。 (它调用对象ToString()否则,默认情况下返回类型的名称,你注意到了。)

如:

<ComboBox x:Name="cbProgram" DisplayMemberPath="ProgramName" ... 

或者:

<ComboBox x:Name="cbProgram" ...> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding ProgramName}" /> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox>