2009-09-11 49 views
0

我有一個ListControl填充ObservableCollection。我還在用戶控件上添加了「添加新項目」TextBox。當我在TextBox中輸入文本並點擊「添加」時,該項目會通過適當的邏輯並添加到我的列表控件立即反映的ObservableCollection。到現在爲止還挺好。從TextBox向ObservableCollection添加新項目保持綁定狀態?

然而,那TextBox仍然填充我剛剛添加的項目...如果我嘗試更改或退格TextBox,我剛添加的項目也反映了更改!如何在添加新項目後清除TextBox?我正在使用MVVM方法,所以我的TextBox綁定到{Binding Path=Object.Name}

任何想法?

回答

0

沒有足夠的細節提供正確的答案,但我會給它一個鏡頭。看起來你需要在向ObservableCollection添加前一個之後創建一個新的「Object」(如Path = Object.Name)。這意味着TextBox將被綁定到新對象而不是舊對象,並且您將能夠重複此過程。

0

當按下Add按鈕時,我會克隆TextBox綁定中的對象並將該克隆添加到ObservableCollection中。

然後,您可以將對象綁定到文本框並對其進行編輯而不會混淆添加的對象,也可以通過將對象設置爲空來清除文本框。

+0

當你說克隆時,你到底是什麼意思?我不能只說BackupObject = CurrentObject; BusinessClass.Save(BackupObject); CurrentObject = null; 原因是,看起來我的BackupObject只是指向CurrentObject指向的內存中相同的對象。我沒有正確克隆對象嗎? – Shafique 2009-09-15 21:32:20

+0

不,您需要使用與原始數據相同的數據實際創建一個新對象。這通常通過實現ICloneable接口來完成。 因此,如果對象是一個變量名爲theString的字符串,則需要將theString.Clone()添加到ObservableCollection中,這將創建一個全新的String對象。 – timothymcgrath 2009-09-17 00:21:35

相關問題