powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Binding list Dictionary to DataGrid, MVVM
3 сообщений из 3, страница 1 из 1
Binding list Dictionary to DataGrid, MVVM
    #38774104
Deza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть свойство в модели
Код: c#
1.
public ObservableCollection<Dictionary<string, string>> Rows



XAML

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<Window x:Class="Test.Views.TestView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:viewModel="clr-namespace:Test.ViewsModel"
        Title="PriceList" Height="427" Width="746">
    <Window.Resources>
        <viewModel:MyModelx:Key="MM" />
    </Window.Resources>

    <DockPanel LastChildFill="True" DataContext="{Binding Source={StaticResource MM}}">

        
            <DataGrid AutoGenerateColumns="True"  DataContext="{Binding Rows}" >
                
            </DataGrid>

        </Menu>
    </DockPanel>

</Window>



В словаре может быть переменное число значений, но все словари в списке имеют одинаковое количество значений
не могу подбиндить к DataGrid с автоматической генерацией колонок
подскажите плиз
...
Рейтинг: 0 / 0
Binding list Dictionary to DataGrid, MVVM
    #38776109
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deza,

я не очень хорошо понял, чего вы хотите, но стандартными средствами WPF такое не сделать.
в ViewModel вам нужно преобразовать эти данные в более представляемый вид.
например, вот так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
            var list = new ObservableCollection<Dictionary<string, string>>()
            {
                new Dictionary<string, string> {{"name", "Roman"}, {"surname", "Mejtes" }},
                new Dictionary<string, string> {{"name", "Alexandr"}, {"surname", "Lovchev"}},
                new Dictionary<string, string> {{"name", "Dmitriy"}, {"surname", "Tiutikov" }}
            };

            //var pre = list.SelectMany(p => p.Select(i => new Tuple<string,string>(i.Key, i.Value)).Cast<object>().ToList());
            var table = new System.Data.DataTable();
            foreach (var i in list[0])
                table.Columns.Add(i.Key);
             foreach (var i in list)
                table.Rows.Add(i.Values.ToArray<object>());
             Table = table;


после того, как вы забиндите поле Table в DataGrid, у Вас получится таблица с 2 колонками name и surname и соответствующими значениями под ними, автогенерация столбцов будет работать
...
Рейтинг: 0 / 0
Binding list Dictionary to DataGrid, MVVM
    #38776128
Супер_Пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понял тс хочет получить 2 столбца: Key, Value. И в них увидеть значения. Не надо делать автогенерацию, добавьте 2 столбца руками, первый забиндить на Key, второй на Value.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Binding list Dictionary to DataGrid, MVVM
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]