public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value == null) { return null; } King king = new King(); if (value.GetType() == typeof(King)) { king = (King)value; } else { king = ((KingEvent)value).Ruler; } if (parameter != null) { Type kingType = typeof(King); return kingType.GetProperty(parameter.ToString()).GetValue(king, null); } return king; }
private void SelectKing(King king, KingEvent kingEvent) { List<object> newSelectedItems = new List<object>() { king, kingEvent }; this.SelectedItems = newSelectedItems; }
private void SelectKing(King king) { this.SelectKing(king, this.events.First(kingEvent => kingEvent.Ruler == king)); }
protected override IEnumerable ParseData(System.IO.TextReader dataReader) { string line; int lineCounter = 0; List<King> kingsData = new List<King>(); List<KingEvent> eventsData = new List<KingEvent>(); while ((line = dataReader.ReadLine()) != null) { if (string.IsNullOrEmpty(line)) continue; var strings = line.Split(';'); if (lineCounter <= 60) { King king = new King(); king.Begin = DateTime.Parse(strings[0]); king.End = DateTime.Parse(strings[1]); king.Name = strings[2]; king.House = strings[3]; king.Birth = DateTime.Parse(strings[4]); king.Parents = strings[5]; king.Married = strings[6]; king.Children = strings[7]; king.Death = lineCounter == 60 ? DateTime.MaxValue : DateTime.Parse(strings[8]); king.Successor = lineCounter == 60 ? "Current ruler" : strings[9]; king.Bio = strings[10]; var stringsCount = strings.Count(); if (10 < stringsCount - 1) { for (int i = 10; i < stringsCount; i++) { king.Bio += strings[i]; } } kingsData.Add(king); } else { KingEvent kingEvent = new KingEvent(); kingEvent.Ruler = kingsData.First(item => item.Name == (strings[0])); kingEvent.Begin = DateTime.Parse(strings[1]); kingEvent.End = DateTime.Parse(strings[1]); kingEvent.EventDescription = strings[2]; eventsData.Add(kingEvent); } lineCounter++; } List<object> data = new List<object>(); data.AddRange(kingsData); data.AddRange(eventsData); return data; }