簡而言之,我在我的XML文件中有一個DataGrid
,我綁定了一個列表 - 在本例中,列表爲Person
s。但是,我還想要一個額外的列,因爲此列表中的所有條目都將是Person
的子類,即PersonWithAge
。不過,我不允許更改ListOfPeople
的類型。當AutogenerateColumns == True時,是否可以向DataGrid添加更多列?
如果我手動在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>
OK,你不能改變ListOfPeople但可以在創建一個新的列表。公共IEnumerable ListOfPeopleWithAge {獲得{返回ListOfPeople.OfType (); }} –
Paparazzi
我看到你的想法,但一個'ObservableCollection'似乎沒有'OfType'方法,是嗎? – Yellow
但是如果有辦法將它從一個扔到另一個,那就太棒了。但簡單地轉換給了我這個錯誤:'不能將類型'ObservableCollection'轉換爲'ObservableCollection ' –
Yellow