在silverlight 4中将自定义对象列表绑定到datagrid

在silverlight 4中将自定义对象列表绑定到datagrid,silverlight,Silverlight,源XML <?xml version="1.0" ?> <songs> <song sname="song1.mp3"/> <song sname="song2.mp3"/> <song sname="song3.mp3"/> <song sname="song4.mp3"/> </songs> XAML 绑定代码 void ParseXMLFile(string dataInXmlF

源XML

<?xml version="1.0" ?>
<songs>
  <song sname="song1.mp3"/>
  <song sname="song2.mp3"/>
  <song sname="song3.mp3"/>
  <song sname="song4.mp3"/>
</songs>

XAML


绑定代码

 void ParseXMLFile(string dataInXmlFile)
        {

            List<Song> songs = new List<Song>();

            XDocument xmlDoc = XDocument.Parse(dataInXmlFile);
            songs = (from r in xmlDoc.Descendants("song")
                     select new Song
                     {
                         name = (string)r.Attribute("sname").Value
                     }).ToList();

            DataGrid1.ItemsSource = songs;
        }
void ParseXMLFile(字符串dataInXmlFile)
{
列表歌曲=新列表();
XDocument xmlDoc=XDocument.Parse(dataInXmlFile);
songs=(来自xmlDoc.substands(“song”)中的r)
选择新歌
{
名称=(字符串)r.Attribute(“sname”).Value
}).ToList();
DataGrid1.ItemsSource=歌曲;
}
当上述代码运行时,datagrid为空

调试时,我可以看到对象歌曲有4项


问题是它没有正确绑定-任何建议都将受到赞赏。

您还没有向我们展示您的
歌曲的来源


我怀疑您已将
名称
属性声明为
内部
。您需要是
公共的
,它才能在数据网格中工作。

替换您的代码部分

DataGrid1.ItemsSource = songs;

虽然看起来很愚蠢,但这对我来说很有用

DataGrid1.ItemsSource = songs;
DataGrid1.ItemsSource = null;
DataGrid1.ItemsSource = songs;