WPF DataGrid Take()不适用于ItemsSource

时间:2009-04-27 22:23:51

标签: wpf linq filter

我正在尝试将DataGrid绑定到Array以进行测试。 只要我不想过滤任何东西,自动列就能很好地工作。

当我尝试通过.Take(5)或任何其他过滤器过滤数组时,行保持为空,并且只有水平线。我认为它可能有一些事情要做,由Take生成的“匿名”类。但这是一个疯狂的猜测...

让我向您展示一些效果很好的代码,并做我想做的事情:

public partial class WindowLister : UserControl
{
    private int counter = 0;
    public WindowLister()
    {
        InitializeComponent();
        dataGrid1.ItemsSource = SystemWindow.FilterToplevelWindows(filterFunction);
    }

    private bool filterFunction(SystemWindow window)
    {
        counter++;
        if (counter > 5) return false;
        return true;
    }
}

现在版本不起作用:

public partial class WindowLister : UserControl
{
    public WindowLister()
    {
        InitializeComponent();
        dataGrid1.ItemsSource = SystemWindow.FilterToplevelWindows(filterFunction).Take(5);
    }

    private bool filterFunction(SystemWindow window)
    {
        return true;
    }
}

对于任何有兴趣的人来说,使用的来源是来自非常好的Lib:ManagedWinapi.Windows;

感谢任何帮助...... 克里斯

1 个答案:

答案 0 :(得分:0)

我希望您需要一个列表(Take / Where等会给您一个IEnumerable<T> / IQueryable<T>序列。尝试使用.Take(5).ToList().Where(...).ToList()等(其中...是您的过滤器)。