Представление коллекции структур строк в сетке или аналогичных в WPF - Пример? Идеи? - PullRequest
1 голос
/ 22 мая 2010

У меня есть коллекция структур. Структура - это всего лишь несколько строк. пример публичная структура ReportLine { публичная строка Name; публичная строка Address; публичная строка Phone; ... // около 10 других строк } Я не могу изменить эту часть. То, что я хочу сделать, это отобразить его в виде простой сетки или симлара в WPF. Мои единственные требования: а) нужны заголовки столбцов б) строки должны чередоваться по цвету c) столбцы, достаточно большие, чтобы вместить самый большой элемент данных (который не известен до времени выполнения)

Может кто-нибудь указать мне пример, чтобы начать? GridView - это путь? Или DataGrid? Или, может быть, только сетка?
У меня есть книга Pro WPF на C # 2008, и она охватывает привязку ListBox к коллекциям, но коллекции всегда кажутся коллекциями одного поля (например, коллекция из 40 имен). Здесь у меня есть коллекция (фактически массив) структуры. Как настроить привязку данных?

Как видите, я новичок в этом и, вероятно, больше всего выиграю от ссылки на статью. Я нашел статьи, охватывающие коллекции из 1 поля, но нет примеров, охватывающих привязку к массиву структур. Кроме того, мое первоначальное исследование показывает, что c) не может быть легко сделано, если вы требуете, чтобы столбец был достаточно большим для всех данных в этом столбце, а не только для видимых данных.

Спасибо, Дэйв

1 Ответ

1 голос
/ 22 мая 2010

Все вышеперечисленное можно сделать с помощью DataGrid и ListView . Желательно в сочетании с DataTemplates.

Это довольно просто, например, все перечисленные вами требования могут быть выполнены с помощью одной строки:

<DataGrid AutoGenerateColumns="True" 
          ItemsSource="{Binding Items}" 
          AlternatingRowBackground="Gray" />

Где Items - это свойство типа Item[] (массив экземпляров вашей структуры).

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

...