0

簡単に言えば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>
4

1 に答える 1