여러 뷰 모델로 구성된 다면적인 프로그램 내에서 특정 기능을 실행해야 하는 경우가 종종 있습니다. 다른 하위 뷰 모델의 기본 뷰 모델입니다. 기본 보기 모델이 콘텐츠 표시자 내의 콘텐츠 표시를 관리하고 하위 보기 모델에서 이 디스플레이를 수동으로 업데이트해야 하는 요구 사항이 발생하는 시나리오를 생각해 보세요.
이러한 의사소통 격차를 해소하려면 , 대리자 개체 통합을 고려하세요. 이러한 대리자는 본질적으로 상위 뷰 모델로 돌아가는 경로를 설정하여 메서드를 호출해야 함을 나타내는 "이벤트 발생" 수단을 제공합니다.
특정 메서드를 호출하려면 상위 뷰 모델의 메소드에서는 다음 대리자 구문을 활용합니다.
public delegate void ReadyForUpdate();
하위 뷰 내에서 모델:
// Define a handler for the ReadyForUpdate delegate public void ParameterViewModel_OnParameterChange(string parameter) { // Here, we call the desired method UpdateDisplay(); }
상위 뷰 모델에서:
// Attach the handler to the delegate public ReadyForUpdate OnReadyForUpdate { get; set; } // When the delegate's event is raised (e.g., by the child calling UpdateDisplay()), // this method will be executed public void ChildViewModel_OnReadyForUpdate() { // Desired action occurs here (e.g., updating the display) }
적절한 경우 대체 접근 방식은 하위 뷰에서 직접 바인딩하는 것입니다. 아래 그림과 같이 상위 뷰 모델에:
<!-- In TreeViewView --> <Button Content="Click Me" Command="{Binding DataContext.ParentCommand, RelativeSource={RelativeSource AncestorType={x:Type MainWindow}}}" />
이는 상위 뷰 모델의 인스턴스가 다음과 같다고 가정합니다. MainWindow의 DataContext로 설정합니다.
위 내용은 WPF의 하위 뷰 모델에서 기본 뷰 모델 함수를 어떻게 호출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!