using System; using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime.CompilerServices; using System.Windows; using System.Windows.Media; using BeWo.Annotations; namespace BeWo.View.Detail { public partial class DebugMessageLogView : INotifyPropertyChanged { private ObservableCollection _DebugMessageList; public ObservableCollection DebugMessageList { get => _DebugMessageList; set { if(!Equals(_DebugMessageList, value)) { _DebugMessageList = value; OnPropertyChanged(nameof(DebugMessageList)); } } } public DebugMessageLogView() { InitializeComponent(); DebugMessageList = new ObservableCollection(); DataContext = this; } public void LogMessage(string message) { DebugMessageList.Add(new DebugWindowMessage(message)); } public void LogMessage(string message, Color color) { DebugMessageList.Add(new DebugWindowMessage(message, color)); } public event PropertyChangedEventHandler PropertyChanged; [NotifyPropertyChangedInvocator] protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } private void ButtonBase_OnClick(object sender, RoutedEventArgs e) { DebugMessageList.Clear(); } } public class DebugWindowMessage { public string MessageText { get; } public Color CustomColor { get; } public SolidColorBrush TextColor => new SolidColorBrush(CustomColor); public DebugWindowMessage(string messageText) { MessageText = $"{DateTime.Now:dd.MM.yyyy HH:mm:ss.fff}: {messageText}"; CustomColor = Colors.Black; } public DebugWindowMessage(string messageText, Color customColor) { MessageText = $"{DateTime.Now:dd.MM.yyyy HH:mm:ss.fff}: {messageText}"; CustomColor = customColor; } } }