두 탭이있는 탭 컨트롤이 포함 된 화면이있는 WPF 응용 프로그램이 있습니다. 각 탭에는 DataGrid가 있으며, 각 DataGrid는 Part 객체의 ObservableCollection에 바인딩됩니다. 파트에는 그리드 사이에서 동기화해야하는 몇 가지 "수량"속성이 있습니다. 예를 들어 사용자가 grid1의 partABC 수량을 변경하면 partABC를 동일한 양의 grid2에 추가하거나 grid2에 partABC가 이미 포함되어있는 경우 grid1을 반영하도록 수량을 변경해야합니다.별도의 컬렉션 속성을 동기화하는 방법은 무엇입니까?
내 문제는 이것이 양방향으로 작동해야한다는 것입니다. 두 모눈의 모든 부분에 PropertyChanged 핸들러를 설정하면 끊임없이 서로의 수량을 업데이트하므로 무한 루프가됩니다. 지금까지 탭 컨트롤 선택 변경 이벤트 중에 이것을 처리하고 목록 중 하나를 반복하고 수량을 하나씩 설정했습니다. 이것은 사용자가 잠재적으로 목록에 수천 개의 부품을 추가 할 수 있다는 것을 깨닫고 그 시점에서이 프로세스가 완료하는 데는 용인 할 수없는 시간이 걸립니다 (4500 개의 부품 객체의 경우 약 25 초).
첫 번째 그리드 사용자가 단순히 그들이 찾고있는 부분으로 스크롤하고 수량을 입력는 "선택 목록"의 일종으로서, 데이터베이스의 모든 부분을 포함
편집. 두 번째 눈금에는 사용자가 수동으로 입력 한 부품 만 포함되어있어 원하는 부품 번호를 입력하는 것이 좋습니다. Grid2는 항상 grid1의 하위 집합입니다.
새 값을 기존 값과 비교하고 올리지 않으면 무한 루프가 발생하지 않습니다. 속성이 동일하면 이벤트가 변경됩니다. 예를 들어,'set {if (value! = _myproperty) {_ myproperty = value; RaisePropertyChanged (() => MyProperty);}}' – Dmitry