private void ConsoleMessageChanged(object sender, DependencyPropertyChangedEventArgs e) { ConsoleMessage message = (ConsoleMessage)e.NewValue; switch (message.Level) { case ConsoleMessage.MessageLevel.Log: MessageBackground = new SolidColorBrush(Colors.Transparent); MessageForeground = new SolidColorBrush(Color.FromRgb(0xD5, 0xD5, 0xD5)); break; case ConsoleMessage.MessageLevel.Warning: MessageBackground = new SolidColorBrush(Color.FromRgb(0x33, 0x2B, 0x00)); MessageForeground = new SolidColorBrush(Color.FromRgb(0xFF, 0xDD, 0x9E)); break; case ConsoleMessage.MessageLevel.Error: MessageBackground = new SolidColorBrush(Color.FromRgb(0x29, 0x00, 0x00)); MessageForeground = new SolidColorBrush(Color.FromRgb(0xFF, 0x80, 0x80)); break; } if (message.Source is FileSource fileSource) { Expander.Visibility = System.Windows.Visibility.Visible; ExpanderHeader.Text = message.Message; ExpanderContent.Text = $"at: {fileSource.Path}:{fileSource.Line}"; } else if (message.Source is InteropSource interopSource) { Expander.Visibility = System.Windows.Visibility.Visible; ExpanderHeader.Text = message.Message; ExpanderContent.Text = $"Error in the following code:\n{interopSource.Code}"; } else { SimpleContent.Visibility = System.Windows.Visibility.Visible; SimpleContent.Text = message.Message; } }
public void AddMessage(ConsoleMessage message) { Dispatcher.Invoke(() => { if (!_consoleEnabled) { Root.Visibility = Visibility.Visible; _consoleEnabled = true; } Console.Items.Add(message); if (message.Level == ConsoleMessage.MessageLevel.Error) { ErrorCount++; if (!ConsoleVisible) { UnseenErrorCount++; } } ConsoleScrollViewer.ScrollToEnd(); }); }