2009-09-11 58 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

相关问题