private void InitializeFromSelectedPlayer() { // From selected player GameStatisticsByPlayer byPlayer = SelectedGameStatistics.Players.FirstOrDefault(x => x.PlayerName == SelectedPlayer); if (byPlayer?.SpecialsUsed == null) { SpecialsFromSelectedPlayerGrid = null; } else { List <DynamicColumn> columns = byPlayer.SpecialsUsed.SelectMany(kv => kv.Value).Select(x => x.Key).Distinct().Select(x => new DynamicColumn { Name = x, DisplayName = x, Type = typeof(string), IsReadOnly = true, }).ToList(); List <SpecialStatisticsRow> rows = new List <SpecialStatisticsRow>(); foreach (KeyValuePair <Specials, Dictionary <string, int> > specials in byPlayer.SpecialsUsed.OrderBy(kv => kv.Key)) { SpecialStatisticsRow row = new SpecialStatisticsRow { Special = specials.Key }; foreach (DynamicColumn column in columns) { KeyValuePair <string, int> kv = specials.Value.FirstOrDefault(x => x.Key == column.Name); int value = kv.Equals(default(KeyValuePair <string, int>)) ? 0 : kv.Value; row.TryAddProperty(column.Name, value); } rows.Add(row); } SpecialsFromSelectedPlayerGrid = new DynamicGrid <SpecialStatisticsRow, DynamicColumn>(rows, columns); } }
public GameStatisticsViewModelDesignData() { GameStatisticsHistory = new ObservableCollection <GameStatistics> { new GameStatistics { GameStarted = DateTime.Now.AddMinutes(-10), GameFinished = DateTime.Now.AddMinutes(-5), Players = new List <GameStatisticsByPlayer> { new GameStatisticsByPlayer { PlayerName = "Player1", SingleCount = 4, DoubleCount = 3, TripleCount = 2, TetrisCount = 1, }, new GameStatisticsByPlayer { PlayerName = "Player2", SingleCount = 8, DoubleCount = 6, TripleCount = 4, TetrisCount = 0, }, new GameStatisticsByPlayer { PlayerName = "Player3", SingleCount = 1, DoubleCount = 1, TripleCount = 0, TetrisCount = 0, }, new GameStatisticsByPlayer { PlayerName = "Player4", SingleCount = 0, DoubleCount = 0, TripleCount = 0, TetrisCount = 1, }, new GameStatisticsByPlayer { PlayerName = "Player5", SingleCount = 12, DoubleCount = 7, TripleCount = 0, TetrisCount = 0, }, //new GameStatisticsByPlayer //{ // PlayerName = "Player6", // SingleCount = 20, // DoubleCount = 17, // TripleCount = 5, // TetrisCount = 2, //}, } }, new GameStatistics { GameStarted = DateTime.Now.AddMinutes(-20), GameFinished = DateTime.Now.AddMinutes(-18), }, new GameStatistics { GameStarted = DateTime.Now.AddMinutes(-30), GameFinished = DateTime.Now.AddMinutes(-22), } }; SelectedGameStatistics = GameStatisticsHistory[0]; PlayerList = new List <string> { "Player1", "Player2withaverylongname", "Player3", }; SelectedPlayer = PlayerList[2]; List <DynamicColumn> columns = new List <DynamicColumn> { new DynamicColumn { Name = "Player1", DisplayName = "Player1", Type = typeof(string), IsReadOnly = true, }, new DynamicColumn { Name = "Player2withaverylongname", DisplayName = "Player2withaverylongname", Type = typeof(string), IsReadOnly = true, }, new DynamicColumn { Name = "Player3", DisplayName = "Player3", Type = typeof(string), IsReadOnly = true, }, new DynamicColumn { Name = "Player4", DisplayName = "Player4", Type = typeof(string), IsReadOnly = true, }, new DynamicColumn { Name = "Player5", DisplayName = "Player5", Type = typeof(string), IsReadOnly = true, }, new DynamicColumn { Name = "Player6", DisplayName = "Player6", Type = typeof(string), IsReadOnly = true, }, }; List <SpecialStatisticsRow> rows = new List <SpecialStatisticsRow>(); foreach (Specials special in EnumHelper.GetSpecials(b => b)) { SpecialStatisticsRow row = new SpecialStatisticsRow { Special = special }; foreach (DynamicColumn column in columns) { int value = Randomizer.Instance.Next(20); row.TryAddProperty(column.Name, value); } rows.Add(row); } SpecialsFromSelectedPlayerGrid = new DynamicGrid <SpecialStatisticsRow, DynamicColumn>(rows, columns); SpecialsToSelectedPlayerGrid = new DynamicGrid <SpecialStatisticsRow, DynamicColumn>(rows, columns); }