Я пытаюсь использовать элемент управления System.Windows.Forms.DataGrid
в моем проекте на основе SDK для Compact Framework 3.5 Window Mobile Professional 6, чтобы показать некоторые свойства объектов типа Something
, привязав DataGrid
к экземпляру List<SomethingWrapper>
, например это:
public class SomethingWrapper {
private Something data;
public SomethingWrapper(Something data) { this.data = data; }
public string Column1 { get { /* string from this.data */ } }
public string Column2 { get { /* string from this.data */ } }
}
public class SomethingList : List<SomethingWrapper> {
public SomethingList(IEnumerable<Something> items) {
foreach (var item in items) Add(new SomethingWrapper(item));
Sort((a, b) => a.Column2.CompareTo(b.Column2);
}
}
/* ... */
IEnumerable<Something> dataToShow = /* assume this is filled correctly */
SomethingDataGrid.DataSource = new SomethingList(dataToShow);
Кажется, это работает нормально: правильные данные отображаются в сетке с двумя столбцами с именами Column1
и Column2
и сортируются во втором столбце. Я хочу, чтобы это было только для чтения этих данных, так что все в порядке.
Однако я хотел бы установить ширину столбцов и не могу заставить это работать ...
Попытка очевидного: создание TableStyle
, создание экземпляра стиля столбца в текстовом поле для каждого столбца, добавление его к TableStyle
и установка SomethingDataGrid.TableStyle
к результирующему стилю таблицы. (Это из памяти, или я бы также показал точный код, который я использую. При необходимости я могу добавить это к вопросу где-то позже сегодня.)
Ничего не меняется, однако. Я подозреваю, что это как-то связано с MappingName
на объекте TableStyle
; все примеры, которые я смог найти вчера вечером, похоже, связаны с привязкой данных DataSet
к DataGrid
и установкой MappingName
к правильному имени таблицы в DataSet
. В противном случае стиль таблицы не будет соответствовать вашим ожиданиям. Именно такое поведение я наблюдаю.
Вопрос: ищу ли я правильное место для решения своей проблемы, и если да, то что мне нужно установить TableStyle.MappingName
при привязке к List<T>
, чтобы показать свойства T
...
(Пытался проверить возможные дубликаты, но не смог найти точных совпадений. Пожалуйста, исправьте меня, если я там ошибаюсь.)