문제

MVVM 스타일로 작성하려는 WPF 응용 프로그램이 있습니다. 예외가 발생하면 (문서가 열렸을 때와 같이) MessageBox를 표시하고 싶습니다. 쉽게 할 수 있지만 MessageBox.Show 호출이 ModelView에 있기 때문에 내 코드가 옳지 않습니다. 나는 그런 종류의 것이 시야에 살아야한다고 생각했지만, 나는 코드를 시야에 넣어서는 안된다.

따라서 문제는 실제로 증류 될 수 있습니다 MVVM에 메시지 상자를 표시하는 제안 된 방법은 무엇입니까?

도움이 되었습니까?

해결책

서비스 사용 :

public void SomeMethodInYourViewModel()
{
    try
    {
        DoSomethingDangerous();
    }
    catch (Exception ex)
    {
        ServiceLocator.Resolve<IMessageService>().ShowMessage(ex.Message);
    }
}

이제 메시지 프리젠 테이션에서 VM을 분리했습니다. 표준 (못생긴) 메시지 상자를 전혀 사용하지 않기로 결정할 수도 있으며 VM에 영향을 미치지 않습니다.

다른 팁

Josh Smith의 훌륭한 MVVM 재단을 살펴보십시오. 코드 플렉스. 구체적으로, 메신저 클래스를 살펴보십시오. 메신저 클래스, 서로를 알 필요가없는 다양한 뷰 모델 객체 사이에 메시지를 전달하는 가벼운 방법을 살펴보십시오.

또한 가능한 경우 피하는 것이 가장 좋지만 "보기에 코드 없음"에 대한 어려운 규칙이 있다고 생각하지 않습니다. ; Code-BeHind는 C# 또는 VB.NET 일뿐입니다.

뷰가 바인딩 할 수있는 ViewModel 클래스에 errormessage 문자열 속성을 넣는 것도 원할 수도 있습니다.

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