2010-01-13 30 views
23

Me gustaría que mi WPF Datagrid que está vinculada a mi colección observable tenga la fila en blanco en la parte inferior para que el usuario pueda agregar más información. He vinculado con éxito los datos, es decir, puedo verlos.WPF datagrid ¿permite al usuario agregar filas?

¿Por qué no se muestra la "nueva" fila en blanco? Aquí está mi declaración xaml:

<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: Estoy usando Josh Smith's MVVM implementation. También he leído algunos SO posts sobre el tema y they no tienen helped.

Gracias de antemano.

Actualización 2010-01-14:

Cuando se produce el evento de carga usercontrol, "CanUserAdddRows" es falsa. Sospecho que tiene algo que ver con las condiciones enumeradas here.

Respuesta

33

Ha encontrado el problema. Mi constructor en el objeto que es parte de mi ObservableCollection no fue declarado público.

* Visitas de cabeza *

Gracias por su tiempo.

+8

Me salvó algo de tiempo, también. Tenga en cuenta que necesita un constructor sin parámetros ... – Jobo

4

La nueva fila en blanco dependerá si la colección que está vinculando implementa IEditableCollectionView. ver here. Dicho esto, he encontrado que a veces funciona bien y otras inexplicablemente parece que no, pero el IEditableCollectionView es un comienzo

+0

Según el enlace que ha presentado, ObservableCollection ya implementa IEditableCollectionView. Al menos así es como lo interpretó. –

+1

Aunque, según http://msdn.microsoft.com/en-us/library/ms668604.aspx no lo hace. Gracias por el consejo. –

13

Asegúrate de que tus objetos en ObeservableCollection tengan un constructor sin parámetros predeterminado.