Как использовать словарь для предоставления данных (которые определены во время выполнения) в DataGrid (xaml) в SL4 - PullRequest
0 голосов
/ 17 сентября 2010

Я ищу информацию о том, как предоставлять данные в 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;

    }
}

... и реализация для DataGrid в xaml:

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

...

1 Ответ

0 голосов
/ 22 сентября 2010

решаемая. Я нашел этот пост - http://blog.bodurov.com/How-to-Bind-Silverlight-DataGrid-From-IEnumerable-of-IDictionary/. Я создал столбцы с привязками после этого поста. Единственное изменение, которое я сделал, это добавление идентификаторов столбцов в Bindngs в '[' ']', поскольку SL4 обеспечивает поддержку словарей в xaml: new DataGridTextColumn {Header = "ID", Binding = new Binding ("[ID]")} );

...