2009-04-27 8 views
1

Ich versuche, ein DataGrid zu Testzwecken an ein Array zu binden. Solange ich nicht versuche, etwas zu filtern, funktionieren die automatischen Spalten gut.WPF DataGrid Take() funktioniert nicht für ItemsSource

Sobald ich versuche, das Array durch .Take (5) oder einen anderen Filter zu filtern, bleiben die Reihen leer, und es gibt nur etwas horizontale Linien. Ich denke, es könnte etwas zu tun haben, mit der "anonymen" Klasse, die von Take generiert wird. Aber das ist eine wilde Vermutung ...

Lassen Sie mich Ihnen einen Code, der gut funktioniert und das tut, was ich will:

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; 
    } 
} 

Und nun die Version, die nicht funktioniert:

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

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

Für alle Interessierten ist die Quelle aus der sehr schönen Lib: ManagedWinapi.Windows;

Jede Hilfe ist willkommen ... Chris

Antwort

0

Ich erwarte, dass Sie eine Liste benötigen (Take/Where etc Sie eine IEnumerable<T>/IQueryable<T> Sequenz geben). Versuchen Sie es mit .Take(5).ToList() oder .Where(...).ToList() usw. (wobei ... Ihr Filter ist).

+0

Perfekt ... Ich liebe diese Seite :-) Danke! –

Verwandte Themen