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 Take()不适用于ItemsSource_Wpf_Linq_Filter - Fatal编程技术网

WPF DataGrid Take()不适用于ItemsSource

WPF DataGrid Take()不适用于ItemsSource,wpf,linq,filter,Wpf,Linq,Filter,我正在尝试将DataGrid绑定到阵列以进行测试。 只要我不想过滤任何东西,自动列就可以很好地工作 只要我尝试按.Take5或任何其他过滤器过滤数组,行就会保持为空,并且只有水平线。我认为这可能与Take生成的匿名类有关。但这是一个疯狂的猜测 让我向您展示一些代码,这些代码可以很好地工作,并满足我的要求: public partial class WindowLister : UserControl { private int counter = 0; public Window

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

只要我尝试按.Take5或任何其他过滤器过滤数组,行就会保持为空,并且只有水平线。我认为这可能与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;
    }
}
对于任何感兴趣的人来说,使用的源代码都来自非常好的库:ManagedWinapi.Windows

感谢您的帮助。。。
Chris

我希望您需要一个列表Take/Where etc将为您提供一个IEnumerable/IQueryable序列。尝试使用.Take5.ToList或.Where…ToList等Where。。。是您的过滤器。

完美。。。我喜欢这个网站:-谢谢!