废话不多说直接贴代码:
<Grid xmlns:xcdg="http://schemas.xceed.com/wpf/xaml/datagrid"
xmlns:local="clr-namespace:Xceed.Wpf.Documentation">
<Grid.Resources>
<xcdg:DataGridCollectionViewSource x:Key="cvs_persons"
Source="{Binding Source={x:Static Application.Current},
Path=PersonList}"
CreatingNewItem="CollectionView_CreatingNewItem"
CommittingNewItem="CollectionView_CommittingNewItem"
CancelingNewItem="CollectionView_CancelingNewItem"/>
</Grid.Resources>
<xcdg:DataGridControl x:Name="PersonsGrid"
ItemsSource="{Binding Source={StaticResource cvs_persons}}">
<xcdg:DataGridControl.View>
<xcdg:TableView>
<xcdg:TableView.FixedHeaders>
<DataTemplate>
<xcdg:InsertionRow/>
</DataTemplate>
</xcdg:TableView.FixedHeaders>
</xcdg:TableView>
</xcdg:DataGridControl.View>
</xcdg:DataGridControl>
</Grid>
private void CollectionView_CreatingNewItem( object sender, DataGridCreatingNewItemEventArgs e )
{
e.NewItem = new Person( Person.AutoIncrementID, string.Empty, string.Empty, -1 );
e.Handled = true;
}
private void CollectionView_CommittingNewItem( object sender, DataGridCommittingNewItemEventArgs e )
{
List<Person> source = e.CollectionView.SourceCollection as List<Person>;
source.Add( ( Person )e.Item );
Person.AutoIncrementID = Person.AutoIncrementID + 1;
// the new item is always added at the end of the list.
e.Index = source.Count - 1;
e.NewCount = source.Count;
e.Handled = true;
}
private void CollectionView_CancelingNewItem( object sender, DataGridItemHandledEventArgs e )
{
// Manually handling the insertion of new items requires that the CreatingNewItem,
// CommitingNewItem, and CancelingNewItem events must all be handled even if nothing
// is done in the event.
e.Handled = true;
}
上面Datagrid中最主要代码:
<xcdg:DataGridControl.View>
<xcdg:TableView>
<xcdg:TableView.FixedHeaders>
<DataTemplate>
<xcdg:InsertionRow/>
</DataTemplate>
</xcdg:TableView.FixedHeaders>
</xcdg:TableView>
</xcdg:DataGridControl.View>
好了就这些,自己看吧!