>백엔드 개발 >C++ >WPF의 다른 뷰 모델에서 기본 뷰 모델 함수를 어떻게 호출할 수 있나요?

WPF의 다른 뷰 모델에서 기본 뷰 모델 함수를 어떻게 호출할 수 있나요?

DDD
DDD원래의
2025-01-05 12:08:39129검색

How Can I Call Main View Model Functions from Other View Models in WPF?

다른 뷰 모델에서 기본 뷰 모델의 함수 호출

이 시나리오에는 TreeView와 contentPresenter가 포함된 프로그램이 있습니다. 자신의 뷰 모델. mainWindowViewModel은 contentPresenters의 디스플레이를 제어하며 이를 수동으로 업데이트하려고 합니다.

TreeViewViewModel에서 MainWindowViewModel에 액세스

제공된 코드 조각은 DataContext를 사용하여 MainWindowViewModel을 가져오려고 시도합니다. , 이는 MainWindowVM이 TreeViewViewModel이 아니기 때문에 올바르지 않습니다. DataContext.

상위-하위 통신을 위한 위임 개체

일반적인 접근 방식은 상위 뷰 모델과 하위 뷰 모델 간의 양방향 통신을 허용하는 위임 개체를 사용하는 것입니다. 위임 개체는 뷰 모델 간 매개변수 전달뿐만 아니라 모든 부모-자식 관계에 사용할 수 있습니다.

MainWindowViewModel의 메서드 호출

MainWindowViewModel의 메서드를 호출하려면 TreeViewViewModel, 연결된 답변의 대리자를 해당 메서드로 바꿉니다. 예를 들면 다음과 같습니다.

public void ParameterViewModel_OnParameterChange(string parameter)
{
    // Call MainWindowViewModel method here
    MainWindowVM.UpdateDisplay();
}

또는 매개변수를 사용하지 않는 대리자를 정의할 수 있습니다.

public delegate void ReadyForUpdate();

public ReadyForUpdate OnReadyForUpdate { get; set; }

상위 뷰 모델에서는 하위 뷰 모델에서 메서드를 호출할 수 있습니다. 대리자가 호출될 때 뷰 모델:

public void ChildViewModel_OnReadyForUpdate()
{
    UpdateDisplay();
}

상위 뷰에 직접 바인딩 모델

또 다른 간단한 접근 방식은 하위 뷰에서 상위 뷰 모델로 직접 바인딩하는 것입니다. 이를 통해 예를 들어 하위 뷰의 Button.Command 속성을 상위 뷰 모델의 ICommand 속성에 바인딩할 수 있습니다.

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

이는 MainWindowViewModel이 MainWindow의 DataContext로 설정되어 있다고 가정합니다.

위 내용은 WPF의 다른 뷰 모델에서 기본 뷰 모델 함수를 어떻게 호출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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