자식 뷰 모델에서 상위 뷰 모델의 함수를 실행하는 방법
애플리케이션은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!