using QwirkleClassLibrary.Players; using System.Collections.ObjectModel; using System.ComponentModel; namespace Qwirkle.Views; public partial class Scoreboard : ContentView, INotifyPropertyChanged { private IOrderedEnumerable> scoreboard; private Dictionary currentScoreBoard; private List namesPlayers; public List NamesPlayers { get => namesPlayers; set { if (namesPlayers != value) { namesPlayers = value; OnPropertyChanged(nameof(NamesPlayers)); } } } public Scoreboard() { InitializeComponent(); BindingContext = this; scoreboard = ((App)Application.Current!).Game.ScoreBoard.OrderByDescending(x => x.Value).ThenBy(x => x.Key.NameTag); currentScoreBoard = scoreboard.ToDictionary(); NamesPlayers = currentScoreBoard.Keys.ToList(); ((App)Application.Current!).Game.Board.PropertyChanged += Board_PropertyChanged; } private void Board_PropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e) { scoreboard = ((App)Application.Current!).Game.ScoreBoard.OrderByDescending(x => x.Value).ThenBy(x => x.Key.NameTag); currentScoreBoard = scoreboard.ToDictionary(); NamesPlayers = currentScoreBoard.Keys.ToList(); } public event PropertyChangedEventHandler? PropertyChanged; protected void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } }