绑定到ObservableCollection的WPF Datagrid没有生成列

时间:2010-08-26 14:07:30

标签: wpf wpf-controls binding wpfdatagrid

我正在将数据网格绑定到某些数据并使用AutoColumnGeneration。对数据集使用常规linq查询时,一切正常:

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 个答案:

答案 0 :(得分:1)

嗯,不能说我理解太多了:标题说的是datagrid,但是你在谈论treeview的问题。

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

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

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