Я хотел быстро отобразить список (OF String) в DataGrid (динамически), поэтому Я подумал, что
myDataGrid.ItemsSource = myList
будет быстрым и простым способом сделать это, так как это отлично работает для DataTable:
myDataGrid.ItemsSource = myDataTable.DefaultView
My DataGrid имеет свойство AutoGenerateColumns, установленное на «True». И для datatable это работает нормально, но когда я назначаю List (Of String) для ItemsSource, имя моего столбца отображается как `` Длина '', а отображаемые данные представляют собой целые числа, которые представляют собой количество символов в каждом элементе String в списке , а не фактический элемент String.
Что я делаю не так?
РЕДАКТИРОВАТЬ
Мой список тестов создается следующим образом:
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. Столбец называется «Длина» и содержит целые числа, соответствующие длине каждой строковой записи.
РЕДАКТИРОВАТЬ
Перевод ответа «testalino» в VB:
DataGrid1.ItemsSource = myList.Select(Function(s) New With {.Value = s}).ToList