internal bool OpenLog(string filename) { log.DebugFormat("Opening log '{0}'", filename); this.currentSearchText = String.Empty; this.logEntries.Clear(); var parseResult = defaultParser.ParseLogFile(filename); if (!parseResult.Success) { this.ErrorMessage = parseResult.ErrorMessage; this.ShowErrorMessage = true; return(false); } if (this.ColumnConfig.Columns != null) { foreach (var column in this.ColumnConfig.Columns) { column.PropertyChanged -= NotifyColumnChanged; } } List <Column> columns = parseResult.LogFile.Keys.Select(ak => new Column() { Header = ak, DataField = String.Format("[{0}]", ak), EntryKey = ak, IsVisible = true }).ToList(); this.ColumnConfig.Columns = columns; foreach (var column in columns) { column.PropertyChanged += NotifyColumnChanged; } NotifyOfPropertyChange(() => ColumnConfig); this.logEntries.AddRange(parseResult.LogFile.Entries); return(true); }