Динамическое создание столбцов в сетке данных - PullRequest
0 голосов
/ 25 февраля 2009

Я пытаюсь создать сетку данных с переменным количеством столбцов и строк. Я могу создать столбцы, но не знаю, как вставить содержимое.

_dataGrid.Columns.Add(new DataGridTextColumn { Header = "Column 0",
                                                            Binding = new Binding("0")

                                                            }
                                  );

У меня есть все данные, которые я хочу добавить в строку [,]. Я не понимаю, как подготовить структуру данных, которая реализует IEnumerable, чтобы я мог установить

_dataGrid.ItemsSource = GenerateData();//I'd expect to return a Dictionary["0"]=List<string>(){"1","2","3"} to bind to but it doesn't work

Какую структуру данных мне нужно вернуть из GenerateData, если я хочу включить столбец, в котором есть «1», «2», «3»?

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 10 июня 2009

ItemSource действительно может быть чем угодно ... Я демонстрирую ниже массив анонимных типов, но вам придется использовать именованные типы, если вы хотите двустороннее связывание данных (анонимные типы генерируют одностороннее связывание)

grid.Columns.Add(new DataGridTextColumn { 
    Header = "Foo",
    Binding = new Binding("Foo")
});

grid.Columns.Add(new DataGridTextColumn { 
    Header = "Bar",
    Binding = new Binding("Bar")
});

grid.ItemsSource = new [] {
   new { Foo = "asdf", Bar = "asdf" },
   new { Foo = "asdf", Bar = "asdf" },
   new { Foo = "asdf", Bar = "asdf" }
}
0 голосов
/ 10 июня 2009

В конечном счете, ItemsSource просто должен быть объектом, который реализует IEnumerable. Объекты, составляющие коллекцию, должны иметь свойство, соответствующее привязке, установленной в столбце. DataTable - это, пожалуй, самое естественное место для начала работы.

0 голосов
/ 25 февраля 2009

Я нажал эту последнюю ночь, я хотел вручную добавить контент в разные строки и ячейки и т. Д.

Вы можете сделать это программно, сказав:

Grid.SetRow(myUserControl, 1);
Grid.SetColumn(myUserControl, 1);

myGrid.Children.Add(myUserControl);

Он полностью игнорирует модель привязки данных, но иногда это именно то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...