簡単に言えばDataGrid
、リストにバインドした XML ファイルに があります。この例では、 のリストですPerson
。ただし、このリストのすべてのエントリが のサブクラスになるため、追加の列も必要Person
ですPersonWithAge
。ただし、 のタイプを変更することはできませんListOfPeople
。
XAML で列を手動で追加すると、すぐにクラッシュします。この列を追加して、他のすべての列と同期するにはどうすればよいですか? XAML ファイル内でキャストする方法はありますか? m_grid_AutoGeneratingColumn
または、メソッドに追加できますか?
これは私のコードです:
// In MyGridView.xaml.cs
public class MyGridView
{
public ObservableCollection<Person> ListOfPeople { get; set; }
private void m_grid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
/* Some formatting here... */
}
}
public class Person
{
public string Name { get; set; }
}
public class PersonWithAge : Person
{
public int Age{ get; set; }
}
XAML コード:
// MyGridView.xaml
<UserControl x:Class="Project.MyGridView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<DataGrid Name="m_myGrid"
ItemsSource="{Binding ListOfPeople}
AutoGenerateColumns="True" AutoGeneratingColumn="m_grid_AutoGeneratingColumn" >
<!--DataGridTextColumn Header="Age" /--> <!-- This makes the thing crash -->
</DataGrid >
</Grid>
</UserControl>