2010-01-13 14 views
23

Ich möchte, dass mein WPF-Datagrid, das an meine beobachtbare Sammlung gebunden ist, unten eine leere Zeile hat, damit der Benutzer weitere Informationen hinzufügen kann. Ich habe die Daten erfolgreich gebunden, d. H. Ich kann es sehen.WPF DataGrid ermöglicht dem Benutzer das Hinzufügen von Zeilen?

Warum wird die 'neue' leere Zeile nicht angezeigt? Hier ist meine XAML-Deklaration:

<UserControl.Resources> 
    <CollectionViewSource x:Key="MyItems" Source="{Binding Path=AllItems}"> 
    </CollectionViewSource> 
</UserControl.Resource> 

<my:DataGrid HorizontalAlignment="Stretch" 
    AutoGenerateColumns="True" 
    SelectionUnit="FullRow" 
    CanUserAddRows="True" 
    CanUserDeleteRows="True" 
    DataContext="{StaticResource MyItems}" 
    ItemsSource="{Binding}"> 

PS: Ich verwende Josh Smith's MVVM implementation. Ich habe auch einige SO posts über das Problem gelesen und they haben nicht helped.

Vielen Dank im Voraus.

-Update 2010-01-14:

Wenn das Usercontrol Last Ereignis eintritt, "CanUserAdddRows" ist falsch. Ich vermute, dass etwas mit den aufgeführten Bedingungen zu tun hat here.

Antwort

33

Das Problem gefunden. Mein Konstruktor in dem Objekt, das Teil meiner ObservableCollection ist, wurde nicht als öffentlich deklariert.

* Hits Kopf *

Vielen Dank für Ihre Zeit.

+8

hat mich auch etwas gerettet. Beachten Sie, dass Sie einen parameterlosen Konstruktor benötigen ... – Jobo

4

Die neue leere Zeile hängt davon ab, ob die zu bindende Auflistung IEditableCollectionView implementiert. siehe here. Davon abgesehen habe ich festgestellt, dass es manchmal gut funktioniert und manchmal nicht erklärbar scheint, aber die IEditableCollectionView ist ein Start

+0

Gemäß dem von Ihnen angegebenen Link implementiert ObservableCollection bereits IEditableCollectionView. Zumindest hat es das so interpretiert. –

+1

Obwohl laut http://msdn.microsoft.com/en-us/library/ms668604.aspx nicht. Danke für den Tipp. –

13

Stellen Sie sicher, dass Ihre Objekte in der ObeservableCollection über einen parameterlosen Standardkonstruktor verfügen.

Verwandte Themen