두 클라이언트 클래스간에 공유되는 ObservableCollection이 있습니다. 각자가 컬렉션을 변경할 수 있습니다. 그것이 발생하면 다른 클래스는 어떤 조치를 취해야합니다. 각 클라이언트 클래스가 자체 동작을 처리하지 않도록하려면 어떻게해야합니까?공유 할 관찰 가능한 컬렉션의 이벤트에서 자신의 동작을 처리하지 마십시오
0
A
답변
0
CollectionChanged
이벤트에 도움이 될만한 것이 표시되지 않습니다. sender
은 컬렉션 자체 일 뿐이며 NotifyCollectionChangedEventArgs
에는이 용도로 사용할 수있는 정보가 없습니다.
처음에는 각 클래스에서 CollectionChanged
이벤트를 구독하기 때문에 뭔가 추가되면들을 준비가되어 있다고 가정합니다. 그런 다음 한 클래스 나 다른 클래스의 항목을 추가하려고하면 먼저 이벤트를 구독 취소하고 항목을 추가 또는 제거한 다음 다시 구독하십시오.
public class SomeClass
{
ObservableCollection<int> myObservableColl = new ObservableCollection<int>();
public SomeClass()
{
myObservableColl.CollectionChanged += MainWindowViewModel_CollectionChanged;
}
private void AddItem(int number)
{
myObservableColl.CollectionChanged -= MainWindowViewModel_CollectionChanged;
myObservableColl.Add(number);
myObservableColl.CollectionChanged += MainWindowViewModel_CollectionChanged;
}
private void MoveItem(int oldIndex, int newIndex)
{
myObservableColl.CollectionChanged -= MainWindowViewModel_CollectionChanged;
myObservableColl.Move(oldIndex, newIndex);
myObservableColl.CollectionChanged += MainWindowViewModel_CollectionChanged;
}
// etc, etc.
}
당신이 방법의 전체 무리를 만들고 싶어하지 않은 경우,이 같은 일 정의 할 수 있습니다 :
private void ChangeCollectionWithoutNotification(Action action)
{
myObservableColl.CollectionChanged -= MainWindowViewModel_CollectionChanged;
action.Invoke();
myObservableColl.CollectionChanged += MainWindowViewModel_CollectionChanged;
}
을 그리고 다음에 액션 통과 :
ChangeCollectionWithoutNotification(() => myObservableColl.Add(5));
ChangeCollectionWithoutNotification(() => myObservableColl.Move(1, 2));
+0
고마워, 그랜트. 나는 그것을 사용할 것이라고 생각한다. –
관련 문제
- 1. Datagrid를 사용한 관찰 가능한 컬렉션의 다중 뷰
- 2. 공유 관찰 가능한 오류 처리 문제
- 3. 관찰 가능한 컬렉션과 계산 가능한 컬렉션의 차이점은 무엇입니까?
- 4. 관찰 가능한 컬렉션
- 5. Angularjs : 컨트롤러간에 관찰 가능한 데이터 공유
- 6. 어린이가없는 요소를 처리하지 마십시오
- 7. 관찰 가능한 컬렉션의 변경 DataGrid에 반영되지 않는 항목
- 8. "더 이상 처리하지 마십시오"이유
- 9. 만들기 관찰 가능한-배열 관찰 가능한
- 10. 데이터 테이블의 열을 기준으로 관찰 가능한 컬렉션의 데이터
- 11. 관찰 가능한 컬렉션의 항목을 그리드에 넣는 방법은 무엇입니까?
- 12. 관찰 가능한
- 13. 관찰 자료 공유
- 14. HttpWebResponse - 제대로 연결을 처리하지 마십시오.
- 15. 개체를 여러 번 처리하지 마십시오
- 16. 관찰 가능한 패턴의 대안은 무엇입니까?
- 17. 관찰 가능한 컬렉션 Silverlight에서 관찰 할 수있는 컬렉션
- 18. KnockoutJS - dependenant 관찰 가능한 또는 계산 관찰 가능한
- 19. 셔플은 관찰 가능한 컬렉션
- 20. 관찰 가능한 값을 구독
- 21. 관찰 가능한 LINQ가 있습니까?
- 22. 부모를 관찰 가능한 목록에 바인딩하기
- 23. 관찰 가능한 스로틀
- 24. 관찰 가능한 배열 녹아웃
- 25. 복합 관찰 가능한
- 26. 관찰 가능한 범위 변화
- 27. 버퍼 그룹화 관찰 가능한
- 28. 옵서버/관찰 가능한 도움말!
- 29. 관찰 가능한 게터를 폴리머로 바인딩 할 위치
- 30. 버튼을 전환 할 때 관찰 가능한 필터
을 * flag *는 그것을 해결하기 위해 사용하기 쉽습니다. 콜렉션을 변경하기 전에'bool'을 설정하고, 다시 설정하십시오. 다른 클래스가 첫번째 이벤트 플래그를 체크하면 이벤트를받습니다. – Sinatr