借助网络配置,控制Modbus工具的日志显示,避免卡死界面
智能大石头 authored at 2021-12-11 22:09:19
1.12 KiB
XCoder
using System.Windows;
using System.Windows.Documents;
using System.Windows.Media;
using CrazyCoder.ViewModels;

namespace CrazyCoder.Views;

/// <summary>网络调试工具窗口</summary>
public partial class NetworkWindow : Window
{
    /// <summary>ViewModel</summary>
    public NetworkViewModel ViewModel { get; }

    /// <summary>实例化网络调试工具窗口</summary>
    public NetworkWindow()
    {
        InitializeComponent();

        ViewModel = new NetworkViewModel();
        DataContext = ViewModel;

        // 绑定日志回调
        ViewModel.OnLog += AppendLog;
    }

    private void AppendLog(String msg)
    {
        if (!Dispatcher.CheckAccess())
        {
            Dispatcher.Invoke(() => AppendLog(msg));
            return;
        }

        if (msg == "__CLEAR__")
        {
            txtReceive.Document.Blocks.Clear();
            return;
        }

        var paragraph = new Paragraph(new Run(msg))
        {
            Margin = new Thickness(0),
            Padding = new Thickness(0)
        };

        txtReceive.Document.Blocks.Add(paragraph);
        txtReceive.ScrollToEnd();
    }
}