하위 뷰 모델에서 기본 ViewModel의 함수 호출
계층 관계가 있는 여러 뷰 모델이 포함된 시나리오에서는 다음이 필요할 수 있습니다. 하위 뷰 모델 내에서 기본 뷰 모델의 함수를 호출합니다. 이 문서에서는 위임 개체를 활용하는 솔루션을 제공하여 이러한 요구 사항을 정확하게 설명합니다.
설명된 시나리오를 고려해보세요. 기본 창 보기 모델은 하위 보기에 표시되는 콘텐츠를 관리합니다. 작업은 하위 뷰 모델에서 기본 창 뷰 모델의 함수를 호출하여 디스플레이를 수동으로 업데이트하는 것입니다.
대리자 개체 사용
대리자 메서드 접근 방식을 사용합니다. 솔루션 및 참조 문서에서는 모든 부모-자식 시나리오에서 통신이 가능합니다. 하위 뷰 모델에서 상위 뷰 모델로, Window 코드 숨김에서 하위 Window 코드 숨김으로, 심지어 데이터 관계 간에도 액세스가 가능합니다.
구현
상위 뷰에서 대리인 정의 모델:
public delegate void ReadyForUpdate(); public ReadyForUpdate OnReadyForUpdate { get; set; }
자식 뷰 모델 내에서 핸들러를 대리자에 연결합니다.
public void ReadyForUpdateHandler() { // Call the desired method in the parent view model }
상위 뷰 모델에서 , 다음과 같은 경우 메서드를 호출하세요. 적절함:
public void ChildViewModel_OnReadyForUpdate() { // Call your method here UpdateDisplay(); }
대체 접근 방식
어떤 경우에는 더 간단한 접근 방식으로도 충분할 수 있습니다. 하위 뷰에서 상위 뷰 모델로의 직접 바인딩을 사용하면 상위 뷰 모델의 ICommand 속성에 직접 액세스할 수 있습니다.
<!-- In a child view --> <Button Content="Click Me" Command="{Binding DataContext.ParentCommand, RelativeSource={RelativeSource AncestorType={x:Type MainWindow}}}" />
이 방법은 상위 뷰 모델 인스턴스가 기본 창의 DataContext로 설정되어 있다고 가정합니다.
위 내용은 하위 뷰 모델이 상위 ViewModel의 함수를 어떻게 호출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!