Je cherche des informations sur la façon de fournir des données à DataGrid en utilisant le dictionnaire. Mon cas d'utilisation est: J'ai WebService qui me fournit une table avec le contenu (et les noms de colonnes) que je connais à l'exécution.Comment utiliser Dictionary pour fournir des données (qui sont définies dans runtime) à DataGrid (xaml) dans SL4
Ma mise en œuvre actuelle d'un tuple de données est:
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;
}
}
... et la mise en œuvre pour DataGrid en XAML est:
<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>
...
Résolu. J'ai trouvé cet article - http://blog.bodurov.com/How-to-Bind-Silverlight-DataGrid-From-IEnumerable-of-IDictionary/. J'ai créé Columns with Bindings après ce post. Seul changement que j'ai fait était de mettre un ids de colonnes dans Bindngs dans '[' ']' parce que SL4 fournit un support pour les liaisons de dictionnaires dans xaml: new DataGridTextColumn { Header = "ID", Binding = new Binding ("[ ID] ") }); – Skarab