2014-07-09 2 views
0

mvvm 패턴을 사용하는 Windows Phone 앱이 있습니다. 현재 상태 표시 줄을 제어하고 ViewModel에서 메시지 대화 상자를 표시합니다. 지금까지 나는이 개 가능한 솔루션이 있습니다 StatusBar 및 MessageDialog를 사용하는 Windows Phone 앱용 Mvvm 패턴

  1. 가 상태 표시를위한 인터페이스를 만들

    을하고 MessageDialog 인스턴스 주입 : 처리

    public interface IMessageDialog 
    { 
        Task ShowMessage(string message); 
    } 
    
    public class MessageDialog: IMessageDialog 
    { 
        async Task ShowMessage(string message) 
        { 
         await new MessageDialog(message).ShowAsync(); 
        } 
    } 
    
    //In the view model locator 
    SimpleIoc.Default.Register<IMessageDialog, MessageDialog>(); 
    
  2. 메신저를 사용하고보기를 원해야

    Messenger.Default.Send<string>(Constants.ConnectionErrorDialog, Constants.UIMessages); 
    

ResourceLoader를 사용하여 현지화 된 문자열을 얻었으며 uni를 사용할 수 있기를 바랍니다. 내 애플 리케이션을 테스트하지 마십시오. 사전

+0

"인터페이스 작성 및 인스턴스 주입"이란 무엇을 의미합니까? StatusBar/MessageDialog 컨트롤을 ViewModel에 주입하는 것을 의미합니까? 나는 이것이 MVVM 패턴을 깰 때 이것을 권고하지 않을 것이다. 몇 가지 코드/XAML을 게시하여 사람들이 현재 갖고있는 것과 더 개선해야 할 점을 더 잘 이해할 수 있습니다. – Tseng

+0

몇 가지 예제를 게시했습니다. – sidy3d

답변

0

그 일의 일반적인 방법으로

덕분에, 대화 상자에 대한 옵션 1에 제공 (페이지 분명히보기 위해 나중에 일/윈도우 /) 대화 상자 또는 네비게이션 서비스를 통해입니다

내가 StatusBar에 익숙하지 않지만 XAML에서 선언 할 수있는 경우 ViewModel을 만들고 바인딩 한 다음 이벤트 집계 (메시징)를 사용할 수 있습니다. StatusViewModel은 해당 속성을 바인딩하고 이벤트 수집기에 등록하고 다른 ViewModel은 이벤트를 보냅니다.

View 로직이 아니며 ViewModel에 속하기 때문에 View의 코드에서 이벤트/메시지 처리를 구현하지 않겠습니다. 항상 이벤트 수집기/메시징을 사용하여 ViewModel간에 통신하고 Views에는 통신하지 마십시오.