다른 뷰 모델에서 기본 뷰 모델의 함수 호출
이 시나리오에는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!