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

时间:2011-04-22 06:44:49

标签: 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

<sdk:DataGrid 
            x:Name="DataGrid1" 
            Margin="0,60,0,0" 
            IsReadOnly="True"
            AutoGenerateColumns="True" 
            VerticalScrollBarVisibility="Visible" 
            BorderBrush="DarkGreen" 
            BorderThickness="5" 
            CanUserSortColumns="True" 
            CanUserResizeColumns="False" 
            CanUserReorderColumns="False">
</sdk:DataGrid>

绑定代码

 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;
        }

当上面的代码运行时 - 数据网格为空。

调试时我可以看到对象歌曲有4个项目。

问题是它没有正确绑定 - 任何建议都表示赞赏。

2 个答案:

答案 0 :(得分:1)

您尚未向我们展示Song课程的来源。

我怀疑您已将name属性声明为internal。您需要public才能在DataGrid中工作。

答案 1 :(得分:0)

替换您的代码部分

DataGrid1.ItemsSource = songs;

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

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