다른 뷰 모델에서 기본 뷰 모델 함수 호출
문제:
애플리케이션에서 트리 보기와 여러 콘텐츠 표시기를 사용하여 기본 창 보기 모델 내에서 함수를 호출하려고 합니다. (MainWindowViewModel) 트리 뷰 뷰 모델(TreeViewViewModel). MainWindowViewModel이 이러한 변경 사항을 제어하므로 디스플레이를 수동으로 업데이트하는 데 필요합니다.
해결책:
대리자 개체를 사용하는 것은 이러한 상위-하위 통신을 위한 실행 가능한 솔루션입니다. 대리자 메서드는 자식-부모 뷰 모델, 코드 숨김 관계, 순수 데이터 상호 작용 등 다양한 컨텍스트에서 사용될 수 있습니다. 대리자에 대한 자세한 내용은 Microsoft의 Delegates(C# 프로그래밍 가이드) 설명서를 참조하세요.
대리자 구현:
TreeViewViewModel에서 대리자를 구현하여 상위 뷰 모델로 돌아가는 경로입니다. 하위 뷰 모델이 준비되면 호출할 대리자 메서드를 정의합니다.
public delegate void ReadyForUpdate(); public ReadyForUpdate OnReadyForUpdate { get; set; }
기본 뷰 모델(MainWindowViewModel)은 핸들러 연결 시 UpdateDisplay 메서드를 구독합니다.
public void TreeViewViewModel_OnreadyForUpdate() { UpdateDisplay(); }
데이터 바인딩 접근 방식:
또는 더 간단한 접근 방식을 고려해 보세요. 하위 뷰에서 상위 뷰 모델로의 직접 데이터 바인딩이 포함됩니다. 예를 들어 버튼 명령 속성을 바인딩합니다.
<!-- In TreeViewView --> <Button Content="Click Me" Command="{Binding DataContext.ParentCommand, RelativeSource={RelativeSource AncestorType={x:Type MainWindow}}}" />
이는 MainWindow의 DataContext가 상위 뷰 모델의 인스턴스로 설정되어 있다고 가정합니다.
위 내용은 WPF 애플리케이션의 하위 뷰 모델에서 기본 뷰 모델 함수를 호출하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!