2009-04-28 4 views
4

ObservableCollection의 인스턴스가 두 개의 별도 데이터 템플릿 (표시 용 하나, 편집 용)이있는 WPF 목록 상자에 바인딩되어 있습니다. 편집을위한 데이터 템플릿에는 텍스트 상자에 단방향 바인딩과 저장 버튼이 있습니다.ObservableCollection의 기존 요소를 어떻게 업데이트합니까?

수정 버튼을 누르면 (편집 모드에서 목록 항목을 삽입 한 후) 값이 ObservableCollection (및 디스플레이)의 값을 대체하도록 텍스트 상자를 변경하도록 변경해야합니까?

답변

9

컬렉션의 항목은 INotifyPropertyChanged 인터페이스를 구현하는 유형이어야합니다. 이렇게하면 단일 항목 개체의 속성 값이 변경되었다는 내용의 목록 상자가 통보됩니다. ObservableCollection에가 CollectionChanged 이벤트를 발생하는 경우에만 수집 변화 (항목, 제거 등을 첨가) ObservableCollection에의 MSDN 라이브러리 기사

견적

완전히 결합 타겟 소스 개체 바인딩 데이터를 값을 전송 지원하려면 바인딩 가능한 속성을 지원하는 컬렉션의 각 개체는 INotifyPropertyChanged 인터페이스와 같은 알림 메커니즘이 변경된 적절한 속성을 구현해야합니다.

+0

닷넷 3.5에 도입. 나는 이것을 시험해보고 무슨 일이 일어나는지를 보게 될 것이다. –

+1

제안한 항목에 INotifyPropertyChanged 인터페이스를 구현했습니다. OneWay에서 TwoWay로 바인딩을 변경하면 내 문제가 해결 된 것 같습니다. –

1

변경 통지가 바운드 클라이언트와 데이터 소스 사이의 결합에서 발생 들어, 결합 형태는 어느해야

  • 가에서 INotifyPropertyChanged 인터페이스를 구현한다 (선호).
  • 바운드 형식의 각 속성에 대한 변경 이벤트를 제공하십시오.

두 가지를 모두 수행하지 마십시오.

자료 : MSDN: INotifyPropertyChanged Interface

1

내가는 바인딩 <T> 클래스를 사용하여 유사한 문제를 해결했습니다.

컬렉션 및 개별 항목 변경시 모두 발생하는 ListChanged 이벤트가 있습니다.

는 응답을 주셔서 감사합니다

관련 문제