2011-11-03 5 views
0

페이지 탐색을 처리하기위한 다음 구성표에 대한 의견을 찾고 있습니다. Mvvm Light Messenger를 사용하면 브로드 캐스트 방식으로 메시지를 전송하므로 다중 페이지 솔루션의 모든 ViewModel이 동일한 유형의 메시지를 수신하는 경우 모든 메시지에 모두 메시지가 수신됩니다. 현재 ViewModel이 처리해야하는 것들을 필터링하는 것은 HandleIncomingMessage()에 의해 수행됩니다.WP7 망고의 페이지 탐색?

또한 "globalish"데이터를 어디서 저장하고 App.xaml.cs에 정의 된 정적 속성을 사용했는지 궁금합니다 currentCustomerId 등.하지만 데이터베이스의 모든 사람 데이터가 포함 된 개체 그래프를 여기에 두어야합니까?

PageTransitionMessageType()을 확장하거나 오버로드하여 각 페이지에 특정 메시지를 보내기위한 속성을 제공 할 수도 있습니다. 이런 식으로 위에서 설명한 수신 메시지 필터링에 대해 걱정할 필요가 없습니다.

의견을 보내 주시면 감사하겠습니다.

에 대한 // ViewModelLocator

에서
public static readonly Uri Page1Uri = new Uri("/Views/Page1.xaml", UriKind.Relative); 
public static readonly Uri Page2Uri = new Uri("/Views/Page2.xaml", UriKind.Relative); 
public static readonly Uri Page3Uri = new Uri("/Views/Page3.xaml", UriKind.Relative); 

// 페이지 2

비슷한 페이지 데프을 만들
public partial class Page1 : PhoneApplicationPage 
{ 
public Page1() 
{ 
    InitializeComponent(); 
    Messenger.Default.Register<PageTransitionMessageType>(this, (action) => NavigationHandler(action)); 

} 

private void NavigationHandler(PageTransitionMessageType action) 
{ 
    NavigationService.Navigate(action.PageUri); 
} 
} 

// 페이지 3

비슷한 VM을 생성
public class Page2ViewModel : ViewModelBase 
{ 
public Page2ViewModel() 
{ 
    Messenger.Default.Register<PageTransitionMessageType>(this, (s) => HandleIncomingMessage(s)); 
} 

private void HandleIncomingMessage(PageTransitionMessageType s) 
{ 
    // check for page2 message 
    if (s.PageUri == ViewModelLocator.Page2Uri) 
    { 
     // do cunning page2 stuff... 
    } 
} 
} 

// 만들 유사한 VM Page2

public class Page1ViewModel : ViewModelBase 
{ 
public RelayCommand GotoPage2Cmd { get; private set; } 

public Page1ViewModel() 
{ 
    GotoPage2Cmd = new RelayCommand(() => ExecuteGoToPage2(),() => CanExecuteGoToPage2()); 
} 

private void ExecuteGoToPage2() 
{ 
    var message = new PageTransitionMessageType() { PageUri = ViewModelLocator.Page2Uri }; 
    Messenger.Default.Send<PageTransitionMessageType>(message); 
} 
}  


public class PageTransitionMessageType 
{ 
    public Uri PageUri { get; set; } 
    // e.g. put props with data you'd like to pass from one page to another here 

}  

답변

1

"글로벌 변수"를 저장하는 것이 좋습니다 IsolatedStorage

+0

감사합니다! 이 프로젝트에서 잠시 떨어져 있었지만 지금 일들이 정리되었습니다. – Caad9

+0

엄지 손가락을 높이 평가됩니다 :) –