Я хотел быстро отобразить список (OF String) в DataGrid (динамически), поэтому я подумал
myDataGrid.ItemsSource = myList
будет быстрым и простым способом сделать это, так как это прекрасно работает для DataTable:
myDataGrid.ItemsSource = myDataTable.DefaultView
Мой DataGrid имеет свойство AutoGenerateColumns, установленное в значение «True». И для datatable это работает нормально, но когда я назначаю List (Of String) для ItemsSource, имя моего столбца отображается как «Length», и отображаемые данные представляют собой целые числа, которые являются количеством символов в каждом элементе String в List , а не фактический строковый предмет.
Что я делаю не так?
EDIT
Мой список тестов создается следующим образом:
Dim myList As New List(Of String)
For i As Int32 = 1 To 25
myList.Add("Item #" & i)
Next
Следующие 2 метода дают одинаковые результаты.
Создание CollectionView:
Dim cv = CType(CollectionViewSource.GetDefaultView(myList), CollectionView)
DataGrid1.ItemsSource = cv
Просто используйте список:
DataGrid1.ItemsSource = myList
Оба эти метода отображают один столбец в DataGrid. Столбец называется «Длина» и содержит целые числа, соответствующие длине каждой строковой записи.
EDIT
Перевод ответа «testalino» на VB:
DataGrid1.ItemsSource = myList.Select(Function(s) New With {.Value = s}).ToList