Skip to content

Commit c9aa13c

Browse files
committed
Switching visual states in wpf application.
Converted DependencyProperty for VM to normal property.
1 parent 6ae015d commit c9aa13c

1 file changed

Lines changed: 23 additions & 14 deletions

File tree

src/Codebreaker.WPF/Views/Pages/GamePage.xaml.cs

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)