> 백엔드 개발 > C++ > 하위 뷰 모델이 상위 ViewModel의 함수를 어떻게 호출할 수 있나요?

하위 뷰 모델이 상위 ViewModel의 함수를 어떻게 호출할 수 있나요?

Patricia Arquette
풀어 주다: 2024-12-26 18:36:12
원래의
319명이 탐색했습니다.

How Can Child View Models Call Functions in a Parent ViewModel?

하위 뷰 모델에서 기본 ViewModel의 함수 호출

계층 관계가 있는 여러 뷰 모델이 포함된 시나리오에서는 다음이 필요할 수 있습니다. 하위 뷰 모델 내에서 기본 뷰 모델의 함수를 호출합니다. 이 문서에서는 위임 개체를 활용하는 솔루션을 제공하여 이러한 요구 사항을 정확하게 설명합니다.

설명된 시나리오를 고려해보세요. 기본 창 보기 모델은 하위 보기에 표시되는 콘텐츠를 관리합니다. 작업은 하위 뷰 모델에서 기본 창 뷰 모델의 함수를 호출하여 디스플레이를 수동으로 업데이트하는 것입니다.

대리자 개체 사용

대리자 메서드 접근 방식을 사용합니다. 솔루션 및 참조 문서에서는 모든 부모-자식 시나리오에서 통신이 가능합니다. 하위 뷰 모델에서 상위 뷰 모델로, Window 코드 숨김에서 하위 Window 코드 숨김으로, 심지어 데이터 관계 간에도 액세스가 가능합니다.

구현

  1. 상위 뷰에서 대리인 정의 모델:

    public delegate void ReadyForUpdate();
    public ReadyForUpdate OnReadyForUpdate { get; set; }
    로그인 후 복사
  2. 자식 뷰 모델 내에서 핸들러를 대리자에 연결합니다.

    public void ReadyForUpdateHandler()
    {
        // Call the desired method in the parent view model
    }
    로그인 후 복사
  3. 상위 뷰 모델에서 , 다음과 같은 경우 메서드를 호출하세요. 적절함:

    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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿