>백엔드 개발 >C++ >WPF의 하위 뷰 모델에서 상위 뷰 모델 함수를 호출하는 방법은 무엇입니까?

WPF의 하위 뷰 모델에서 상위 뷰 모델 함수를 호출하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-26 05:51:21606검색

How to Call Parent View Model Functions from Child View Models in WPF?

자식 뷰 모델에서 상위 뷰 모델의 함수를 실행하는 방법

애플리케이션은 TreeView, 두 개의 contentPresenter 및 별도의 뷰로 구성됩니다. 기본 창을 포함한 각 UI 요소에 대한 모델입니다. 디스플레이를 업데이트하려면 TreeViewViewModel에서 MainWindowViewModel의 메서드를 호출하려고 합니다.

비슷한 경우와 마찬가지로 실행 가능한 솔루션에는 대리자 개체를 활용하는 것이 포함됩니다. 자세한 설명과 실제 구현에 대해서는 "뷰 모델 간 매개변수 전달"이라는 제목의 이전 포럼 응답을 확인하세요. 해당 예의 대리자를 원하는 메서드로 바꾸면 유사하게 작동합니다.


업데이트

메서드를 직접 호출하려면 매개변수를 전달하는 대신 아래의 수정된 대리자 핸들러를 고려하십시오.

public void ParameterViewModel_OnParameterChange(string parameter)
{
    // Call your method here
}

이 대리자는 이벤트와 유사한 기능("ReadyForYouToCallMethodNow")을 활성화하는 상위 뷰 모델입니다. 또는 입력 매개 변수 없이 대리자를 정의할 수 있습니다.

public delegate void ReadyForUpdate();

public ReadyForUpdate OnReadyForUpdate { get; set; }

상위 뷰 모델에서 이전 예제에 설명된 대로 핸들러를 연결한 후 메서드를 호출할 수 있습니다.

public void ChildViewModel_OnReadyForUpdate()
{
    // Call your method here
    UpdateDisplay();
}

여러 하위 뷰 모델이 관련된 경우 모든 사람이 액세스할 수 있는 별도의 클래스에 대리자를 정의할 수 있습니다. models.


업데이트 2

추가 분석에 따르면 더 간단한 접근 방식으로도 충분할 수 있습니다. 하위 뷰 요소를 상위 뷰 모델의 속성에 직접 바인딩할 수 있습니다. 예를 들어 TreeViewView의 다음 코드 조각은 Button.Command 속성을 MainWindowViewModel의 ICommand 속성에 바인딩합니다.

<Button Content="Click Me" Command="{Binding DataContext.ParentCommand, 
RelativeSource={RelativeSource AncestorType={x:Type MainWindow}}}" />

이는 상위 뷰 모델 인스턴스가 MainWindow의 DataContext로 설정되어 있다고 가정합니다.

위 내용은 WPF의 하위 뷰 모델에서 상위 뷰 모델 함수를 호출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.