2009-08-26 6 views
35

J'obtiens des noix ici avec ceci:Comment supprimer la ligne vide de DataGrid lors de la liaison à une ObservableCollection <T>?

ObservableCollection<Employee> list = new ObservableCollection<Employee>(); 
dgEmployees.ItemsSource = list; 

Lorsque vous déboguez la variable de la liste, il est vide (list.Count = 0), mais je le lier à un DataGrid (WPFToolkit), il me montre une rangée vide.

Dans la fenêtre immédiate, pour dgEmployees.Items il est affiché:

dgEmployees.Items[0] 
{NewItemPlaceholder} 

et

dgEmployees.Items[0].GetType() 
{Name = "NamedObject" FullName = "MS.Internal.NamedObject"} 
[System.RuntimeType]: {Name = "NamedObject" FullName = "MS.Internal.NamedObject"} 

Il semble se produire après que je l'ai mis ce Datagrid dans un TabControl, mais je ne suis pas sûr qu'il a quelque chose à voir avec ça.

Est-ce que quelqu'un sait comment supprimer cette ligne vide?

+1

Vous devez accepter l'autre réponse, c'est mieux que le vôtre – reggaeguitar

Répondre

18

Je l'ai

sur Datagrid XAML, mettre l'attribut:

IsReadOnly="True" 
72

Le même problème persiste dans la version 4.0 de WPF DataGrid, et elle est causée par l'ajout nouvelle ligne qui il s'affiche automatiquement pour ObservableCollection ItemsSource. Réglage IsReadOnly comme vrai c'est trop radical à mon humble avis.
Je l'ai résolu en désactivant la propriété CanUserAddRows si vous n'avez pas besoin que le comportement, mais vous voulez encore des cellules à modifier:

CanUserAddRows = « false »

+0

convenu à moins qu'il ne soit vraiment en lecture seule alors qu'il semble plus de tuer. – Jon

+0

Merci, cette réponse m'a aidé beaucoup plus que l'IsReadOnly qui dans mon cas avait des effets secondaires que je ne voulais pas. – Dessus

+1

Peut-on marquer cela comme la réponse comme IsReadOnly a des effets secondaires alors que ce n'est pas le cas? – Shreyas

2

CanUserAddRows="False" et IsReadOnly="True" combinaison des deux est préférable d'assurer tous les inconvénients supplémentaires.

+0

vous suggérez qu'il utilise deux fonctionnalités qui se chevauchent où l'une suffira et en fait 'IsReadOnly = true' supprimera d'autres fonctionnalités sans aucun gain. – NappingRabbit

Questions connexes