Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Визуализация двумерного массива в wpf DataGrid, Как привязать матрицу к wpf DataGrid 
:(
    Опции темы
spartak1501
Дата 20.10.2011, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 20.10.2011

Репутация: нет
Всего: нет



Здравствуйте, помогите отбразить матрицу в DataGrid!!! Не получается ее прикрепить...
Это код консоли C#
                
Код

            TableRule table = new TableRule(2);
            int count = table.CountTerms.Length;

            // количество строк и столбцов матрицы
            table.CountTerms[0] = 3;
            table.CountTerms[1] = 4;
 
            int colRow = 1;
            for (int i = 0; i < table.CountTerms.Length; i++)
            colRow *= table.CountTerms[i];
            table.CountRow = colRow;
 
            table.Rule = new int [table.CountRow, table.CountVars];
 
            table.CreateTable(); // метод формирования матрицы
 
            for (int i = 0; i < table.CountRow; i++)
            {
                Console.Write("   {0}   ", i);
 
                for (int j = 0; j < table.CountVars; j++)
                {
                    Console.Write("   {0}", table.Rule[i, j]); // вывод в консоли
                 }
                Console.WriteLine();
            }
 
            Console.ReadLine();

 
Этот код должен использоваться в WPF проекте...
Как привязать матрицу table.Rule[i, j] к wpf DataGrid?
PM MAIL   Вверх
Gvozdin
Дата 20.10.2011, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 9.8.2011
Где: Москва

Репутация: 8
Всего: 8



А что конкретно не получается?


DataGrid оперирует понятиями строка и столбец.

Преобразуете вашу матрицу к списку строк с данными(List<RuleRow> или даже просто List<int[]>), их количество будет i.

Ставите его в DataGrid.ItemsSource.

Далее для каждой колонки, их будет всего j, создаете DataGridTextColumn и задаете ему Binding = new Binding(String.Format("[{0}]", j)).

Запихиваете эти колонки в DataGrid.Columns.

Примерно так все должно работать.
--------------------
http://gvozdin.ru
PM MAIL WWW   Вверх
spartak1501
Дата 25.11.2011, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 20.10.2011

Репутация: нет
Всего: нет



Цитата(Gvozdin @ 20.10.2011,  13:52)
Преобразуете вашу матрицу к списку строк с данными(List<RuleRow> или даже просто List<int[]>)

Как это сделать?
PM MAIL   Вверх
Gvozdin
Дата 25.11.2011, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 9.8.2011
Где: Москва

Репутация: 8
Всего: 8



Ну как обычно.

Проходите циклом по строкам.
Из строки делаете int[].
Все строки складываете в List<int[]>.

Подробнее? smile
--------------------
http://gvozdin.ru
PM MAIL WWW   Вверх
spartak1501
Дата 25.11.2011, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 20.10.2011

Репутация: нет
Всего: нет



Да, если можно! Особенно с выводом в DataGrid...
Будет ли он отображать двумерный массив?
PM MAIL   Вверх
Буратиныч
Дата 12.1.2012, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 15.3.2011

Репутация: нет
Всего: нет



Тоже интересен какой-нибудь простой наглядный пример отражения массива или коллекции в DataGrid на C# и XAML. Не получается никак сделать привязку к таблице.
PM MAIL   Вверх
Gvozdin
Дата 12.1.2012, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 9.8.2011
Где: Москва

Репутация: 8
Всего: 8



Да никаких проблем

http://www.codeproject.com/KB/WPF/WPFDataGridExamples.aspx - для тех кто работает через DataSet

http://www.i-programmer.info/programming/w...-datagrid-.html - для тех кто предпочитает MVVM
--------------------
http://gvozdin.ru
PM MAIL WWW   Вверх
Буратиныч
Дата 16.1.2012, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 15.3.2011

Репутация: нет
Всего: нет



Не могу пока найти решения как привязать коллекцию, не имеющую заранее определённого количества строк и столбцов, типа
[code=csharp]

Код

            string[] str1 = new string[] {"one","two","3"};
            string[] str2 = new string[] { "4", "five", "6" };


Правильно я понимаю, что нужно создавать отдельный класс, который будет определять свойство для каждой ячейки или всё гораздо проще? Покажите пример, плз.
PM MAIL   Вверх
Gvozdin
Дата 16.1.2012, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 9.8.2011
Где: Москва

Репутация: 8
Всего: 8



Ну пусть у нас будет IList<string[]> (в принципе тоже что и string[][])

Ставим нашу коллекцию в DataGrid.ItemsSource и делаем колонки:

<DataGridTextColumn Binding={Binding Path=[0]}/>
<DataGridTextColumn Binding={Binding Path=[1]}/>
<DataGridTextColumn Binding={Binding Path=[2]}/>

Если заранее не известно сколько будет колонок, то придется динамически создавать колонки из кода.
--------------------
http://gvozdin.ru
PM MAIL WWW   Вверх
Буратиныч
Дата 16.1.2012, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 15.3.2011

Репутация: нет
Всего: нет



Да, нужно как раз динамически создавать колонки из кода.
Конструкция должна быть типа такой? Что ещё необходимо добавить? В XALM остаётся только dataGrid1 кинуть?

Код

            IList<string[]> digits = new IList<string[]>();
            for (int j = 0; j < i; j++)
            {
                ...
                digits.Add(current_string)
            }
            dataGrid1.ItemsSource = digits;

PM MAIL   Вверх
Буратиныч
Дата 16.1.2012, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 15.3.2011

Репутация: нет
Всего: нет



Вообще возможно ли размещение в таблице данных в массиве или коллекции с заранее неопределённой размерностью? Может я зря трачу время на поиски ответа и не там копаю, и стоит вернуться в Windows Forms. Задача то вроде простейшая.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0814 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.