void Infos_Click(object sender, RoutedEventArgs e) { var times = new List<int>(); var current = 0; foreach (var c in model.Montage.Chunks) { if (c.StartsNewEpisode) { times.Add(current); current = 0; } if (c.Mode == Mode.Face || c.Mode == Mode.Screen) current += c.Length; } times.Add(current); if (model.Montage.Information.Episodes.Count == 0) { model.Montage.Information.Episodes.AddRange(Enumerable.Range(0, times.Count).Select(z => new EpisodInfo(Guid.NewGuid()))); } else if (model.Montage.Information.Episodes.Count != times.Count) { while (model.Montage.Information.Episodes.Count > times.Count) model.Montage.Information.Episodes.RemoveAt(model.Montage.Information.Episodes.Count - 1); while (model.Montage.Information.Episodes.Count < times.Count) model.Montage.Information.Episodes.Add(new EpisodInfo(Guid.NewGuid())); } for (int i = 0; i < times.Count; i++) model.Montage.Information.Episodes[i].Duration = TimeSpan.FromMilliseconds(times[i]); var wnd = new InfoWindow(); wnd.DataContext = model.Montage.Information; wnd.ShowDialog(); model.Save(); }