【发布时间】:2015-01-31 18:04:42
【问题描述】:
我有一个名为 Receiving 的类作为绑定到允许用户编辑的窗口的属性。在该类中有一个名为 ReceivingDetails 的可观察集合,绑定到一个 dataGrid。 ReceivingDetails 也绑定到文本框以进行添加和编辑。
当我需要添加一个项目时,很简单:
theReceiving.ReceivingDetails.Add(new ReceivingDetails());
在用户单击“保存”之前,不会保存任何内容。发生这种情况时,我会检查父级和子级的脏数据并构建一个事务,然后提交。我希望所有人都在失败时回滚。工作得很好..
现在我还需要删除详细信息。我正在努力解决删除该项目的问题,以便绑定显示它已消失,但直到 SAVE 才真正删除该项目。
如果我只是从集合中删除它,它就不会在那里进行迭代和物理删除。
我正在考虑编写一个特殊的 Receiving.DeleteDetail() 方法或将其从 observablecollection 中删除并将其保存到“已删除详细信息”列表中的东西......然后在保存接收时,循环遍历“已删除的详细信息”列表并运行 SP 以真正删除它们。
我是否步入正轨,还是有更好的方法来做到这一点?谢谢!
更新 - 部分代码:
Datagri 的 XAML。请注意,它绑定到接收中的可观察集合。 thrReceiving 是窗口上的 PublicProperty。
<DataGrid Grid.Row="0"
Name="dataGridReceivingDetails"
AlternatingRowBackground="LightBlue"
SelectionMode="Single"
AlternationCount="2"
AutoGenerateColumns="True"
IsSynchronizedWithCurrentItem="True"
IsReadOnly="True"
ItemsSource="{Binding theReceiving.ReceivingDetails, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" >
</DataGrid>
这是接收类中的 OC:
private ObservableCollection<ReceivingDetail> _ReceivingDetails;
/// <summary>
/// A List of the associated Shipment Details
/// </summary>
public ObservableCollection<ReceivingDetail> ReceivingDetails
{
get { return _ReceivingDetails; }
set { _ReceivingDetails = value;
RaisePropertyChanged();
}
}
希望对你有帮助……
【问题讨论】:
-
嗨 pStan,可以发布更多代码吗?你很难理解这个问题,对我来说很难理解问题是什么:)
标签: c# wpf observablecollection