@@ -16,28 +16,37 @@ public GamePage()
1616 InitializeComponent ( ) ;
1717 WeakReferenceMessenger . Default . Register ( this ) ;
1818 WeakReferenceMessenger . Default . UnregisterAllOnUnloaded ( this ) ;
19+ ViewModel . PropertyChanged += ViewModel_PropertyChanged ;
20+ ContentWrapper . GoToState ( "Start" ) ;
1921 }
2022
21- public GamePageViewModel ViewModel
22- {
23- get => ( GamePageViewModel ) GetValue ( ViewModelProperty ) ;
24- set => SetValue ( ViewModelProperty , value ) ;
25- }
23+ public GamePageViewModel ViewModel { get ; }
2624
27- public static readonly DependencyProperty ViewModelProperty =
28- DependencyProperty . Register ( "ViewModel" , typeof ( GamePageViewModel ) , typeof ( GamePage ) , new PropertyMetadata ( null ) ) ;
29-
30- private async void Button_Click ( object sender , RoutedEventArgs e )
25+ public void Receive ( GameMoveMessage message )
3126 {
32- await _navigationService . NavigateToAsync ( "TestPage" ) ;
27+ if ( message . GameMoveValue is not GameMoveValue . Completed )
28+ return ;
29+
30+ PegScrollViewer . UpdateLayout ( ) ;
31+ PegScrollViewer . ScrollToBottom ( ) ;
3332 }
3433
35- public void Receive ( GameMoveMessage message )
34+ private void ViewModel_PropertyChanged ( object ? sender , System . ComponentModel . PropertyChangedEventArgs e )
3635 {
37- if ( message . GameMoveValue is not GameMoveValue . Completed )
36+ if ( e . PropertyName != nameof ( GamePageViewModel . GameStatus ) )
3837 return ;
3938
40- pegScrollViewer . UpdateLayout ( ) ;
41- pegScrollViewer . ScrollToBottom ( ) ;
39+ var stateName = ViewModel . GameStatus switch
40+ {
41+ GameMode . Started or GameMode . MoveSet => "Playing" ,
42+ GameMode . Won or GameMode . Lost => "Finished" ,
43+ _ => "Start"
44+ } ;
45+ ContentWrapper . GoToState ( stateName ) ;
46+ }
47+
48+ private async void Button_Click ( object sender , RoutedEventArgs e )
49+ {
50+ await _navigationService . NavigateToAsync ( "TestPage" ) ;
4251 }
4352}
0 commit comments