using LogoForceTestApp.Modules.MainModule.Models; using Prism.Events; using System; using System.Windows.Controls; using System.Windows.Threading; namespace LogoForceTestApp.Modules.MainModule.Views { /// /// MainPage.xaml 的交互逻辑 /// public partial class MainPage : UserControl { private readonly IEventAggregator _eventAggregator; public MainPage(IEventAggregator eventAggregator) { _eventAggregator = eventAggregator; _eventAggregator.GetEvent().Subscribe(WriteLog); InitializeComponent(); } private void WriteLog(Tuple log) { ListBoxMessage?.Dispatcher?.BeginInvoke(DispatcherPriority.Render, new Action(() => { if (ListBoxMessage.Items.Count > 100)//24 { ListBoxMessage.Items.RemoveAt(0); } var (type, info) = log; var listBoxItem = new ListBoxItem { Content = info }; if (log.Item1 == LogType.Error) listBoxItem.Foreground = System.Windows.Media.Brushes.Red; else if (log.Item1 == LogType.Warning) listBoxItem.Foreground = System.Windows.Media.Brushes.Orange; else listBoxItem.Foreground = System.Windows.Media.Brushes.DarkOliveGreen; ListBoxMessage.Items.Add(listBoxItem); ListBoxMessage.ScrollIntoView(listBoxItem); })); } } }