문제

중재자 패턴이 여러 인스턴스에서 작동하는 방식을 설명할 수 있는 사람이 있습니까?

보기의 내 코드:

public MyView() {
    Mediator.Register("CloseWindow",()=>Close());
}

그리고 ViewModel에서:

public SomeMethod() {
    Mediator.Notify("CloseWindow");
}

이는 View - ViewModel 쌍의 인스턴스가 하나만 있는 한 작동합니다.

여러 인스턴스로 문제를 어떻게 해결합니까?

도움이 되었습니까?

해결책

대체 솔루션을 사용합니다.MyView는 Close 메소드를 포함하는 IMyView 인터페이스를 구현합니다.MyViewModel 개체는 View를 연결하므로 인터페이스를 통해 Close 메서드를 호출할 수 있습니다.

구체적인 예에 ​​관심이 있다면 다음을 살펴보세요.

WAF(WPF 애플리케이션 프레임워크)

다른 팁

중재자 패턴의 특정 구현이 어떻게 작동하는지는 모르겠지만, 내 부분에서는 단순한 문자열보다 더 많은 정보를 보낼 수 있습니다.

예를 들어:

public MyView() {
    Mediator.Register<CloseWindowMessage>(message =>
    {
        if (message.ViewModel == DataContext) Close();
    });
}    

그리고 ViewModel에서 :

public SomeMethod() {
    Mediator.Notify(new CloseWindowMessage(this));
}

이 예에서 뷰 모델은 뷰의 매개 변수로 전달됩니다. 그런 다음보기는 메시지가 뷰 모델에서 전송되고 있는지 확인할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top