私は単純な WPFToolkit を持っていますDataGrid
:
<Grid>
<dg:DataGrid Name="theDataGrid"/>
</Grid>
そして、単純なContact
クラスの背後にあるコードでは:
public class Contact
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Contact(string firstName, string lastName)
{
this.FirstName = firstName;
this.LastName = lastName;
}
}
コード ビハインドのメイン コンストラクターで、List
コレクションを作成し、それを my にバインドしますDataGrid
。
List<Contact> contacts = new List<Contact>();
contacts.Add(new Contact("John", "Tester"));
contacts.Add(new Contact("Jill", "Tester"));
contacts.Add(new Contact("Joe", "Tester"));
contacts.Add(new Contact("Jimmy", "Nontester"));
theDataGrid.ItemsSource = contacts;
それはうまくいきますが、これらの連絡先をLINQで次のようにフィルタリングすると:
List<Contact> contacts = new List<Contact>();
contacts.Add(new Contact("John", "Tester"));
contacts.Add(new Contact("Jill", "Tester"));
contacts.Add(new Contact("Joe", "Tester"));
contacts.Add(new Contact("Jimmy", "Nontester"));
var filteredContacts = contacts.Where(contact => contact.LastName.StartsWith("T"));
theDataGrid.ItemsSource = filteredContacts;
次に、myDataGrid
が入力されますが、フィールドはすべて空です (!)。たとえば、上記の場合、myDataGrid
にはすべて空の行が 3 つあります。デバッグ時に不思議なことに、filteredContacts
4 つの項目が含まれています。
LINQ を使用してカスタム オブジェクトをフィルター処理し、それらを my に表示するにはどうすればよいDataGrid
ですか?