문제
중재자 패턴이 여러 인스턴스에서 작동하는 방식을 설명할 수 있는 사람이 있습니까?
보기의 내 코드:
public MyView() {
Mediator.Register("CloseWindow",()=>Close());
}
그리고 ViewModel에서:
public SomeMethod() {
Mediator.Notify("CloseWindow");
}
이는 View - ViewModel 쌍의 인스턴스가 하나만 있는 한 작동합니다.
여러 인스턴스로 문제를 어떻게 해결합니까?
해결책
대체 솔루션을 사용합니다.MyView는 Close 메소드를 포함하는 IMyView 인터페이스를 구현합니다.MyViewModel 개체는 View를 연결하므로 인터페이스를 통해 Close 메서드를 호출할 수 있습니다.
구체적인 예에 관심이 있다면 다음을 살펴보세요.
다른 팁
중재자 패턴의 특정 구현이 어떻게 작동하는지는 모르겠지만, 내 부분에서는 단순한 문자열보다 더 많은 정보를 보낼 수 있습니다.
예를 들어:
public MyView() {
Mediator.Register<CloseWindowMessage>(message =>
{
if (message.ViewModel == DataContext) Close();
});
}
그리고 ViewModel에서 :
public SomeMethod() {
Mediator.Notify(new CloseWindowMessage(this));
}
이 예에서 뷰 모델은 뷰의 매개 변수로 전달됩니다. 그런 다음보기는 메시지가 뷰 모델에서 전송되고 있는지 확인할 수 있습니다.
제휴하지 않습니다 StackOverflow