如何使用字典向SL4中的DataGrid(xaml)提供数据(在运行时定义)

如何使用字典向SL4中的DataGrid(xaml)提供数据(在运行时定义),xaml,datagrid,silverlight-4.0,runtime,Xaml,Datagrid,Silverlight 4.0,Runtime,我正在寻找有关如何使用Dictionary向DataGrid提供数据的信息。我的用例是:我有一个WebService,它为我提供一个表,其中包含我在运行时知道的内容(和列名) 我目前对数据元组的实现是: public class GridTuple : Dictionary<string, string> { public GridTuple(IDictionary<string, string> cv, int id) : base(cv)

我正在寻找有关如何使用Dictionary向DataGrid提供数据的信息。我的用例是:我有一个WebService,它为我提供一个表,其中包含我在运行时知道的内容(和列名)

我目前对数据元组的实现是:

 public class GridTuple : Dictionary<string, string>
    {

    public GridTuple(IDictionary<string, string> cv, int id) : base(cv)
    {               
        TupleId = id;
    }

    public int TupleId { set; get; }

    public override string ToString()
    {

        string result = TupleId + " ";
        for (int i = 0; i < ColumnNames.Names.Count; i++)
        {
            result += ColumnNames.Names[i] + " " + this[ColumnNames.Names[i]] + " ";
        }
        return result;

    }
}
公共类GridTuple:字典
{
公共GridTuple(IDictionary cv,int id):基(cv)
{               
TupleId=id;
}
公共int-TupleId{set;get;}
公共重写字符串ToString()
{
字符串结果=元组ID+“”;
对于(int i=0;i
…在xaml中,DataGrid的实现是:

<sdk:DataGrid AutoGenerateColumns="True" HeadersVisibility="All" x:Name="dataGrid"
                   HorizontalAlignment="Left" VerticalAlignment="Top"                          

                    ItemsSource="{Binding ListOfGridTuples}" MouseLeftButtonUp="dataGrid_MouseLeftButtonUp" 
                          SelectionMode="Single" Grid.Column="1" >

                <sdk:DataGrid.Columns>
                       <!-- ValueForColumn1 is a key in my GridTuple -->
                    <sdk:DataGridTextColumn Binding="{Binding [ValueForColumn1]}" />
                </sdk:DataGrid.Columns>

 </sdk:DataGrid>


…已解决。我找到了这个帖子-。我在这篇文章之后创建了带有绑定的列。我所做的唯一更改是将Bindings中的列ID放在“[']”中,因为SL4支持xaml中的字典:newDataGridTextColumn{Header=“ID”,Binding=new Binding(“[ID]”)})

解决了。我找到了这个帖子-。我在这篇文章之后创建了带有绑定的列。我所做的唯一更改是将bindings中的列ID放在“[']”中,因为SL4提供了对xaml中字典绑定的支持:newDataGridTextColumn{Header=“ID”,Binding=new Binding(“[ID]”)});