Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 为什么将此DataGrid的ItemsSource绑定到匿名类型集合不起作用?_Wpf_Linq_Datagrid_Anonymous Types_Itemssource - Fatal编程技术网

Wpf 为什么将此DataGrid的ItemsSource绑定到匿名类型集合不起作用?

Wpf 为什么将此DataGrid的ItemsSource绑定到匿名类型集合不起作用?,wpf,linq,datagrid,anonymous-types,itemssource,Wpf,Linq,Datagrid,Anonymous Types,Itemssource,我有一个匿名类型集合,希望将其绑定到DataGrid的ItemsSource属性。我确认集合中有项目,但我的DataGrid为空 我创建了一个调试转换器,但它并没有到达我的断点,所以在那个点之前似乎有什么地方出错了 我检查了输出窗口,没有发现绑定错误 我的匿名类型如下所示: var cars = from c in something.Cars select new { Passengers = from p in c.P

我有一个匿名类型集合,希望将其绑定到DataGrid的ItemsSource属性。我确认集合中有项目,但我的DataGrid为空

我创建了一个调试转换器,但它并没有到达我的断点,所以在那个点之前似乎有什么地方出错了

我检查了输出窗口,没有发现绑定错误

我的匿名类型如下所示:

var cars = from c in something.Cars
           select new
           {
               Passengers = from p in c.Passengers
                            select new
                            {
                                 Name = p.Name
                            }
               Type = s.Type
            };
Cars = cars;
<TabControl ItemsSource="{Binding Cars}">
    <TabControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Type}" />
        </DataTemplate>
    </TabControl.ItemTemplate>
    <TabControl.ContentTemplate>
        <DataTemplate>
            <DataGrid ItemsSource="{Binding Passengers}" >
                <!-- column definitions here -->
            </DataGrid>
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>
在这一点之后,我检查了汽车的内容,它确实有数据

我的Xaml看起来像这样:

var cars = from c in something.Cars
           select new
           {
               Passengers = from p in c.Passengers
                            select new
                            {
                                 Name = p.Name
                            }
               Type = s.Type
            };
Cars = cars;
<TabControl ItemsSource="{Binding Cars}">
    <TabControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Type}" />
        </DataTemplate>
    </TabControl.ItemTemplate>
    <TabControl.ContentTemplate>
        <DataTemplate>
            <DataGrid ItemsSource="{Binding Passengers}" >
                <!-- column definitions here -->
            </DataGrid>
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>
类型上的TextBlock绑定显示正确的数据

我错过了什么

更新:


linq结果的类型为System.linq.Enumerable.WhereSelectListIterator。我有另一个DataGrid,在这里绑定到匿名类型,但是我注意到System.linq.Enumerable.Where SelectEnumerableInterator类型的linq结果。

这是一个IEnumerable.you应该.ToList同时列出乘客和汽车:乘客=c.Passentials.Selectx=>x.Name.ToList和汽车=cars.ToList还注意到,如果您从实体框架中带来这个,您可能需要。包括乘客属性以使其填充数据。@HighCore我尝试调用ToList,但没有成功: