是否可以在自动生成列==True时向数据网格添加更多列
本文关键字:数据 数据网 网格 添加 True 自动生成 是否 | 更新日期: 2023-09-27 18:35:52
简单地说,我的XML文件中有一个DataGrid
,我绑定到一个列表 - 在这个例子中,一个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>
移动要添加到DataGrid.Columns
中的列
<DataGrid Name="m_myGrid"
ItemsSource="{Binding ListOfPeople}
AutoGenerateColumns="True" AutoGeneratingColumn="m_grid_AutoGeneratingColumn" >
<DataGrid.Columns>
<DataGridTextColumn Header="Age" Binding="{Binding Age}"/>
</DataGrid.Columns>
</DataGrid >