【发布时间】:2016-12-30 02:42:48
【问题描述】:
我有点卡在 WPF 数据网格的问题上,我的 google foo 又一次让我失望了,我想做的事情看起来很简单,但我一辈子都无法解决。
请记住,我在此应用程序中使用的是 Caliburn Micro
我有一个数据网格,它绑定到 ObservableCollection<Item> 项目本身使用 NotifyOfPropertyChange 和 IsDirty 标志处理更改,因此编辑这些项目不是问题,但是我无法工作为了弄清楚如何处理添加的新项目,我们使用数据网格的 CanUserEditRows 属性来允许内联添加新项目。
但是,当我尝试检测添加的新项目时,我的问题出现了,为了将其触发到我的数据库服务,似乎很多人使用 ObservableCollection 的 CollectionChanged 事件来检测这一点,然而,这似乎会在用户点击数据网格的{NewItemPlaceholder} 部分时触发,在插入任何数据之前。
private void ItemList_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (e.NewItems != null)
{
foreach (Item i in e.NewItems)
{
_itemManager.Insert(i);
}
}
}
这是我正在使用的代码,也许我犯了一个错误,但我似乎无法弄清楚如何在编辑完成后才触发它,不幸的是,谷歌似乎返回了相同的结果没有不管我如何尝试改写我的问题。希望这里有人可以为我提供一个相对简单的答案。
如果您需要更多代码来向您展示事情是如何工作的(例如 _itemManager),如果需要,我可以提供。
【问题讨论】:
标签: c# wpf datagrid caliburn.micro