我有一個名爲Receiving的類,它是綁定到允許用戶編輯的窗口的屬性。在這個類中有一個名爲ReceivingDetails的可觀察集合綁定到了一個dataGrid。 ReceivingDetails也綁定到用於添加和編輯的文本框。從可觀察集合中刪除項並稍後刪除
當我需要添加一個項目,它很簡單:
theReceiving.ReceivingDetails.Add(new ReceivingDetails());
沒有被保存,直到用戶點擊保存。當發生這種情況時,我檢查父代和子代的骯髒,並建立一個TRANSACTION,然後提交。我希望所有人都在失敗時回滾。工作很好..
現在我需要刪除細節。我試圖圍繞刪除項目,以便綁定將顯示它消失,但不真正刪除該項目,直到保存。
如果我只是從集合中刪除它,它不會在那裏遍歷和物理刪除。
我正在考慮編寫一個特殊的Receiving.DeleteDetail()方法或將它從observablecollection中刪除並將其保存到「已刪除的詳細信息」列表中......然後,當接收被保存時,循環遍歷「已刪除的詳細信息」列表並運行SP以真正刪除它們。
我在軌道上,還是有更好的方法來做到這一點?謝謝!
更新 - 一些代碼:
XAML的datagri。請注意,它綁定到接收中的可觀察集合。 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,可能發佈多一點的代碼?對於你來說,很難爲你解決這個問題,對我來說,很難將我的頭圍繞在問題的範圍內:) – bas 2015-01-31 18:09:35
增加了一些代碼... – pStan 2015-01-31 18:21:59