2013-06-05 3 views
0

Я хочу добавить новые столбцы и строки в C# WPF ListView (GridView) во время выполнения. Насколько я знаю, вы можете добавлять строки в gridview только с помощью анонимных объектов или классов со статическим набором элементов, к которым привязаны столбцы. Есть ли способ сделать это во время выполнения, чтобы пользователь мог добавить новый столбец, привязать этот столбец к чему-то и добавить новые данные?Добавить столбцы и строки в список wpf list динамически

ТНХ ooorndtski

+0

Просьба уточнить пример кода. – JeffRSon

ответ

0

Итак, то, что я искал, описано в this thread. Он создает новый словарь-класс, который реализует интерфейс INotifyPropertyChanged. При добавлении данных в словарь запускается событие.

В месте вашего кода, где вы хотите добавить новую строку, вы просто помещаете данные в объект этого класса Dictionary и добавляете словарь в ObservableCollection, который привязан к DataGrid.

1

Да, вы можете сделать это в коде в среде выполнения. Вам нужен GridView в качестве переменной (дайте ему имя в XAML для автоматической генерации этой переменной в Visual Studio). GridView имеет свойство Columns, которое вы можете обрабатывать, как и любую другую коллекцию, которую вы можете добавить и удалить, например.

Это пример из MSDN (The GridView название "myGridView"):

GridViewColumn gvc3 = new GridViewColumn(); 
gvc3.DisplayMemberBinding = new Binding("EmployeeNumber"); 
gvc3.Header = "Employee No."; 
gvc3.Width = 100; 
myGridView.Columns.Add(gvc3); 

Вообще говоря, все, что вы можете сделать в XAML, вы можете сделать в коде.

+0

Благодарим вас за ответ. Предположим, что при запуске программы уже есть 2 столбца. Чтобы поместить некоторые данные в список, я могу использовать 'ObservableCollection oc = new ObservableCollection ();' и добавить анонимные объекты: 'oc.Add (new {col1 =" A ", col2 =" B "});' , Если я добавлю новый столбец, я хочу добавить данные в этот новый столбец. Как я могу достичь этого? Анонимные объекты статичны и не могут быть изменены во время выполнения. – ooorndtski

+0

Они могут быть, если вы назовете их их идентификатором объекта. Вы прокручиваете элементы управления и разбираете их имя для идентификатора. Кнопка, созданная динамически с именем btn_21, будет захватывать 21 и анализировать через другие имена элементов управления, если 21, а затем сделать что-то с. 'if (c - TextBox)' ... –

Смежные вопросы