2009-08-26 6 views
35

Ich bin Nüsse hier mit dieser bekommen:Wie entfernt man DataGrids leere Zeile beim Binden an eine ObservableCollection <T>?

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

Wenn Sie die Liste Variable debuggen, es leer ist (list.Count = 0), aber dann binde ich es an ein Datagrid (WPFToolkit) zeigt es mir eine leere Reihe.

In unmittelbarer Fenster für dgEmployees.Items es zeigt:

dgEmployees.Items[0] 
{NewItemPlaceholder} 

und

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

Es scheint zu passieren, nachdem ich dieses Datagrid in einem TabControl gesetzt haben, aber ich bin nicht sicher, dass es etwas damit zu tun hat.

Kann jemand diese leere Reihe entfernen?

+1

Sie sollten die andere Antwort akzeptieren, es ist besser als Ihre – reggaeguitar

Antwort

18

ich habe es

auf Datagrid XAML, setzen Sie das Attribut:

IsReadOnly="True" 
72

Das gleiche Problem in WPF 4.0-Version von Datagrid bestehen bleiben, und es wird durch die Add-neue Zeile verursacht, die Es wird automatisch für ObservableCollection ItemsSource angezeigt. Setzen Sie IsReadOnly als True, es ist zu radikal IMHO.
Ich löste es durch das Deaktivieren CanUserAddRows Eigenschaft, wenn Sie nicht, dass das Verhalten benötigen, aber Sie wollen noch modifiziert werden Zellen:

CanUserAddRows = „false“

+0

vereinbart, es sei denn, es ist wirklich readonly dann scheint das zu töten. – Jon

+0

Danke, diese Antwort hat mir viel mehr als die IsReadOnly geholfen, die in meinem Fall einige Nebenwirkungen hatte, die ich nicht wollte. – Dessus

+1

Können wir dies als die Antwort markieren, da IsReadOnly Nebenwirkungen hat, während dies nicht der Fall ist? – Shreyas

2

CanUserAddRows="False" und IsReadOnly="True" Kombination von beidem ist besser, zusätzliche Unannehmlichkeiten zu gewährleisten.

+0

Sie schlagen vor, dass er zwei sich überschneidende Funktionen verwendet, bei denen eine einzige ausreicht und tatsächlich 'IsReadOnly = true' andere Funktionalität ohne jegliche Verstärkung entfernt. – NappingRabbit

Verwandte Themen