Silverlight:空数据网格

时间:2010-10-10 15:15:01

标签: c# silverlight linq

我正在尝试使用LINQ查询生成的匿名类型填充DataGrid。当我将查询结果放在列表框中时,它看起来很好。但是,当我将查询结果放入数据网格时,会生成正确的行数,但单元格为空。

Silverlight screen cap showing the error

(数据网格位于左侧,右侧是列表框。)

分配数据源:

testListBox.ItemsSource = debtPerUser.ItemsSource = ExpenseViewModel.getDebtData(username);

XAML:

<sdk:DataGrid Height="222" HorizontalAlignment="Left" Margin="31,89,0,0" Name="debtPerUser" VerticalAlignment="Top" Width="516" AutoGenerateColumns="True" />
<ListBox Height="222" HorizontalAlignment="Left" Margin="567,89,0,0" Name="testListBox" VerticalAlignment="Top" Width="173" />

我在这里做错了什么?

getDebtData:

    internal static IEnumerable getDebtData(string username)
    {
        IEnumerable<String> users = getUsersInvolving(username);

        var debt = from user in users
                   select new {
                     User = user,
                     Net = owedBetween(username, user) - owedBetween(user, username)
                   };

        return debt.Where(d => d.Net != 0);
    }

更新:当我不使用匿名查询类型时,它可以正常工作。也许这就是问题?

2 个答案:

答案 0 :(得分:2)

是的,匿名类型被设计用于它们声明的方法。将它们暴露在外可能会导致恶果。在这种情况下,我会使用强类型的枚举。

答案 1 :(得分:0)

如果不知道方法ExpenseViewModel.getDebtData返回什么类型的集合,如果它正在使用LINQ,那么您可能会尝试ExpenseViewModel.getDebtData(username).ToList()