最も簡単なオプションはExpandoObject
、ビュー モデル (またはDynamicObject
カスタム動作を追加する場合は に基づくクラス)に使用することです。
public class MyEditor
{
public MyEditor()
{
Items = new ObservableCollection<ExpandoObject>
{
CreateItem(1, "John"),
CreateItem(2, "Mary"),
CreateItem(3, "Peter"),
CreateItem(4, "Sarah")
};
}
private ExpandoObject CreateItem(int id, string name)
{
dynamic item = new ExpandoObject();
item.Id = id;
item.Name = name;
return item;
}
public ObservableCollection<ExpandoObject> Items { get; private set; }
}
XAML:
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Items}">
<DataGrid.Columns>
<DataGridTextColumn Header="Id" Binding="{Binding Id}"/>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
</DataGrid.Columns>
</DataGrid>
速度が重要な場合は、実行時にビュー モデル タイプを発行することを選択します (「タイプ」を参照System.Reflection.Emit
)。