MVVM 패턴을 사용하는 WPF 응용 프로그램의 모델 인 개체 계층 구조가 있습니다. 하위 개체는 계층 구조의 루트 개체에 설정된 속성을 알고 있어야합니다. 이 속성은 때때로 변경 될 수 있습니다 (계층이 만들어 질 때 설정되는 것이 아닙니다). 이 요구 사항이 떠오르 기 전에, 아이가 부모 또는 루트 객체에 대한 참조를 가질 이유가 없었습니다.MVVM 모델 계층 구조의 값 공유
간체, 단축 예 :
A) 아이들에게 부모 (또는 루트) 객체 참조를 추가
public class Airplane
public bool IsFlying { get; set}
public ObservableCollection<WingAssembly> WingAssemblies { get; set; }
public class WingAssembly
public void MethodNeedsIsFlyingState() { }
public Flaps Flaps { get; set; }
public class Flaps
public void MethodAlsoNeedsIsFlyingState() { }
두 패턴이 문제를 해결하기 위해 나에게 발생합니다.
PRO의 : 간단한 변화,
CON의 루트 객체의 상태를 참조 할 간단 : 나는으로 실행할 수 있습니다 다운 스트림 어떤 결과가 확실하지 않다 ... 이전에 필요하지 않은 양방향 객체 계층 구조를 작성합니다 (더 복잡한 데이터 모델?)
B) IsFlying 속성을 필요로하는 하위 개체에 추가하십시오. 루트의 상태가 변경되면 하위 노드의 상태를 업데이트합니다.
PRO : 객체 계층 구조는 여전히 하위가 parent/root를 알 필요가 없습니다.
조건부 : 모델이 발전하면서 필요한 업데이트를 놓치기 쉽습니다. 어린이 IsFlying 상태는 루트 객체 이외의 다른 사용자가 변경할 수 있습니다. 더 복잡한.
내 기댈 것은 모든 자손의 루트에 대한 참조를 소개하는 것입니다. 그러나 더 우아한 해결책을 놓치고 있는지, 또는 그 경로의 중요한 결과를 놓치거나 과소 평가했는지 알고 싶습니다.
를 업데이트 부모에하여 PropertyChanged 이벤트를 추가 할 수 있지만 내가 사용할 수있는 옵션 중 하나를 선택 도움이되지 않습니다 . 그래도 입력 주셔서 감사합니다. –