Заполнение DataGrid в WPF анонимной коллекцией типов
Я заполняю datagrid коллекцией анонимных типов (я устанавливаю свойство DataGrid's DataContext
). И нет никаких ошибок. И в датагриде ничего не изменилось. Я попытался сделать то же самое с определенной коллекцией объектов, но снова ничего не отображается. Пожалуйста, объясните мне, что делать.
Спасибо!
Правка 1
Хорошо. Я попытался установить свойство ItemsSource, и оно работает. Но я получаю странный результат..
Правка 2
Я не знаю как, но ... после запуска 3d он теперь работает нормально?
private void ShowABCResultsButtonOnClick(Object sender, RoutedEventArgs e)
{
var anonArray = new List<NormalizedResult>
{
new NormalizedResult
{
Key = 1,
Title = "Колос",
Volume = 1322.01m,
Weighted = 6.7840m,
Result = 6.7840m,
Group = "A"
},
new NormalizedResult
{
Key = 2,
Title = "Украинский Новый",
Volume = 1250.47m,
Weighted = 6.4169m,
Result = 13.2009m,
Group = "A"
},
new NormalizedResult
{
Key = 3,
Title = "Ржано-Пшеничный",
Volume = 1202.1m,
Weighted = 6.1687m,
Result = 19.3695m,
Group = "A"
}
};
this.dataGrid2.ItemsSource = anonArray;
}
Это мой код.
И снова я запустил.. и это проявилось должным образом только в третий раз?
3 ответа:
Вам, вероятно, нужно сделать две вещи. Первый, , как предложил @Tim , присваивает запрос свойству
DataGrid.ItemsSource
.myDataGrid.ItemsSource = from a in x select new { Prop1 = a.A, Prop2 = a.B, ... };
второй бит будет включать автоматическую генерацию столбцов на вашем компьютере.DataGrid
:<DataGrid x:Name="myDataGrid" AutoGenerateColumns="True" />
Edit : я воссоздал вашу фотографию, используя автоматическую генерацию столбцов и анонимные типы с помощью запроса vanilla LINQ. Таким образом, Вы
должны бытьмогли бы использовать явные столбцы для использования или переключения на реальный тип.<DataGrid x:Name="myDataGrid" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridTextColumn Header="Property 1" Binding="{Binding Prop1}"/> <DataGridTextColumn Header="Property 2" Binding="{Binding Prop2}"/> </DataGrid.Columns> </DataGrid>
Edit 2 : Вы можете использовать
AutoGenerateColumns="True"
только не с голымIEnumerable<T>
, гдеT
- анонимный тип. При добавленииToList
проблема исчезает.myDataGrid.ItemsSource = (from m in typeof(int).GetMethods() select new { Name = m.Name, ReturnType = m.ReturnType.FullName }).ToList();
XAML затем возвращается к:
<DataGrid x:Name="myDataGrid" AutoGenerateColumns="True" />
Вполне уверен, что вы должны установить Datagrid'S
ItemsSource
вместо этого.