Я пытаюсь создать объект DataGridTableStyle, чтобы я мог контролировать ширину столбцов DataGrid. Я создал объект BindingSource, связанный со списком. На самом деле он связан с анонимным списком типов, созданным через Linq следующим образом (имена переменных изменены для ясности того, что я делаю):
List<myType> myList = new List<myType>(someCapacity);
.
...populate the list with query from database...
.
var query = from i in myList
select new
{
i.FieldA,
i.FieldB,
i.FieldC
};
myBindingSource.DataSource = query;
myDataGrid.DataSource = myBindingSource;
Затем я создаю объект DataGridTableStyle и добавляю его в сетку данных. Однако он никогда не применяет мои свойства стиля таблицы, которые я настроил, потому что я не могу установить правильное свойство myDataGridTableStyle.MappingName.
Я искал в Google около 1/2 часа и продолжаю видеть ссылки на один и тот же вопрос на множестве разных форумов (буквально один и тот же текст, как будто кто-то только что скопировал и вставил вопрос ... Я ненавижу это. ..). Во всяком случае, ни одно из предложений не работает, как говорит парень на всех других сайтах.
Так кто-нибудь здесь знает, что мне нужно установить для свойства MappingName, чтобы мой TableStyle действительно работал правильно? Откуда я могу взять имя? (Он не может быть пустым ..., который работает только с BindingSource, который связан с DataTable или SqlCeResultSet и т. Д.).
Я думаю, что это может быть проблемой, если я использую Linq для создания анонимной, более специализированной версии объектов только с теми полями, которые мне нужны. Должен ли я просто попытаться привязать BindingSource непосредственно к объекту List? Или, может быть, даже привязать DataGrid напрямую к объекту List и вообще пропустить источник привязки.
Спасибо
PS - C #, Compact Framework v3.5
UPDATE:
Я отправил ответ ниже, который решил мою проблему. Является ли это лучшим подходом, это сработало. Стоит заглянуть, если у вас возникла та же проблема, что и у меня.