WPF DataGrid Take () не работает для ItemsSource - PullRequest
1 голос
/ 28 апреля 2009

Я пытаюсь привязать DataGrid к массиву для тестирования. Пока я не пытаюсь что-то фильтровать, автоматические столбцы работают хорошо.

Как только я попытаюсь отфильтровать массив с помощью .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;

Любая помощь приветствуется ... Chris

1 Ответ

0 голосов
/ 28 апреля 2009

Полагаю, вам нужен список (Take / Where и т. Д. Даст последовательность IEnumerable<T> / IQueryable<T>). Попробуйте использовать .Take(5).ToList() или .Where(...).ToList() и т. Д. (Где ... - ваш фильтр).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...