2010-08-26 108 views
0

我将一个数据网格绑定到一些数据并使用AutoColumnGeneration。当使用针对数据集定期LINQ查询,一切工作正常:WPF Datagrid绑定到ObservableCollection没有生成列

var queryAll = from actor in actorsAll 
select new 
    { 
     ActorName = actor.IsPerson ? actor.FirstName + " " + actor.LastName : actor.CompanyName 
    }; 

    MalatDetailsBudgetGridUC.ItemsSource = queryAll; 

但正如我希望我的网格被绑定到一个ObservableCollection,我试图用如下:

ActorsCollection collection = new ActorsCollection(actorType); 
var queryAll = from actor in collection 
    select new 
    { 
     ActorName = actor.IsPerson ? actor.FirstName + " " + actor.LastName : actor.CompanyName 
    }; 

MalatDetailsBudgetGridUC.ItemsSource = queryAll; 

当使用这个,我的网格会填充(细小的)行,完全按照它的样子,但是不会生成任何列。

B.T.W - ActorsCollection是一个实现的ObservableCollection,它自己添加了Actor实体。

请帮忙!!

回答

1

那么,不能说我明白了很多:标题说datagrid,但在你谈论treeview的问题。

假设您将queryAll设置为网格的DataContext,两个代码块之间应该没有区别。你确定DataContext是正确设置/绑定的吗?

编辑:也试着用调试器查看由匿名构造函数创建的类型,这可能会给你一些想法。

编辑:在这里添加答案,问题是第二个表单创建一个迭代器,并且datagrid(有趣)被它弄糊涂了。最快的方法是强制枚举器使用ToList()或类似方法生成集合。

+0

对不起树/网格错误。我刚刚编辑它。这完全是关于DataGrid的。 关于创建的类型:当使用数据集(块1)我得到一个ObjectQuery创建,但是当使用ObservableCollection我得到以下类型创建:System.Linq.Enumerable.WhereSelectEnumerableIterator 而第二个课程块不起作用与我已经提到的第一个相同。 – OrPaz 2010-08-26 15:04:22

+0

尝试在迭代器上强制ToList(),然后使用它。 – 2010-08-26 15:19:43

+0

完美!使用ToList()解决了我的问题。谢谢!! – OrPaz 2010-08-26 15:45:25

相关问题