2009-09-11 3 views
0

ObservableCollection으로 채워진 ListControl이 있습니다. 나는 또한 "새로운 항목 추가"TextBox을 usercontrol에도 가지고 있습니다. TextBox에 텍스트를 입력하고 "추가"를 클릭하면 항목이 해당 로직을 거쳐 내 ObservableCollection에 추가됩니다.이 내 ListControl이 즉시 반영됩니다. 여태까지는 그런대로 잘됐다.TextBox에서 ObservableCollection에 새 항목을 추가하면 바인딩 상태가 유지됩니까?

. 그 TextBox은 방금 추가 한 항목으로 채워집니다 ... TextBox을 변경하거나 백 스페이스하려고하면 방금 추가 한 항목도 변경 사항을 반영합니다! 새 항목을 추가 한 후 TextBox을 삭제하려면 어떻게해야하나요? MVVM 방식을 사용하고 있으므로 은 {Binding Path=Object.Name}에 바인딩됩니다.

아이디어가 있으십니까?

답변

0

적절한 답변을 제공하기에는 세부 사항이 충분하지 않지만 한 번만 알려 드리겠습니다. ObservableCollection에 이전 객체를 추가 한 후 Path = Object.Name과 같이 새 "객체"를 만들어야합니다. 즉, TextBox가 이전 개체 대신 새 개체에 바인딩되므로이 프로세스를 반복 할 수 있습니다.

0

추가 단추를 누르면 TextBox 바인딩에있는 개체를 복제하고 ObservableCollection에 복제본을 추가합니다.

그런 다음 개체를 TextBox에 바인딩 된 상태로두고 추가 된 개체를 엉망으로 만들지 않고 편집하거나 개체를 null로 설정하여 TextBox를 지울 수 있습니다.

+0

클론이라고하면 정확히 무엇을 의미합니까? 나는 단지 BackupObject = CurrentObject; BusinessClass.Save (BackupObject); CurrentObject = null; 이유는 내 BackupObject가 CurrentObject가 가리키는 동일한 메모리 내 개체를 가리키고 있기 때문입니다. 그러면 개체를 올바르게 복제하지 못했습니까? – Shafique

+0

아니요, 실제로 원본과 동일한 데이터로 새 개체를 만들어야합니다. 이것은 일반적으로 ICloneable 인터페이스를 구현하여 수행됩니다. 개체가 theString이라는 변수 이름을 가진 문자열이면 ObservableCollection에 String.Clone()을 추가하면 완전히 새로운 String 개체가 만들어집니다. – timothymcgrath

관련 문제