private void UpdateWidths() { double x = -3; foreach (DataGridColumn col in dataGrid.Columns.OrderBy(c => c.DisplayIndex)) { DataGridColumnHeader hdr = col.Header as DataGridColumnHeader; if (hdr != null) { HeaderViewModel t = hdr.DataContext as HeaderViewModel; t.Width = col.ActualWidth; t.Left = x; x += col.ActualWidth; } } FirePropertyChanged("Items"); }
public MainViewModel(IEnumerable <LogItem> items) { Dictionary <string, ThreadViewModel> threadDict = new Dictionary <string, ThreadViewModel>(); GrpHeader = new HeaderViewModel("", 13, 17); IdHeader = new HeaderViewModel("Id", 10, 25); TimeHeader = new HeaderViewModel("Time", 20, 75); ItemViewModel previous = null; foreach (LogItem item in items) { ThreadViewModel t; if (!threadDict.TryGetValue(item.Thread, out t)) { t = new ThreadViewModel(item.Thread, this); threadDict.Add(item.Thread, t); } ItemViewModel e = new ItemViewModel(item, previous, t); entries.Add(e); if (previous != null && previous.Thread == t) { if (previous.Group == null) { previous.Group = new GroupedItemViewModel(t); previous.Group.Add(previous); } e.Group = previous.Group; e.Group.Add(e); } previous = e; } threads = threadDict.Values.ToList(); if (GrpHeader != null) { headers.Add(GrpHeader); } headers.Add(IdHeader); headers.Add(TimeHeader); headers.AddRange(threads); }