WPF数据网格允许用户添加行吗?

30

我希望我的WPF Datagrid,它绑定了我的可观察集合,可以在底部有一个空白行,以便用户可以添加更多信息。我已经成功地绑定了数据,也就是说,我可以看到它。

为什么“新”的空白行没有显示?这是我的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:我正在使用Josh Smith的MVVM实现。我还阅读了一些关于该问题的SO帖子,以及这些帖子,但它们都没有帮助

提前感谢。

更新 2010-01-14:

当用户控件加载事件发生时,“CanUserAdddRows”为false。我怀疑它与这里列出的条件有关。

3个回答

44
发现问题了。我的ObservableCollection中的对象构造函数没有声明为public。
*扇自己一个耳光*
谢谢您的时间。

27

确保你的ObservableCollection中的对象有一个默认的无参构造函数。


我猜这对于一个接口类型的集合来说是不可能的.. (?) - Erik Thysell
有时候一句话就足够了 :) - Stan1k

5

如果您绑定的集合实现了IEditableCollectionView接口,那么新的空白行将依赖于它。请参见此处。尽管如此,我发现有时它能够正常工作,而有时则似乎无法解释为什么不能工作,但是使用IEditableCollectionView是一个好的开始。


根据您提供的链接,ObservableCollection已经实现了IEditableCollectionView接口。至少这是我的理解。 - JP Richardson
1
虽然根据http://msdn.microsoft.com/en-us/library/ms668604.aspx的说法,它并没有。感谢您的提示。 - JP Richardson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接