C# WPF .Net4.8 Framework ReadOnly TextBox 文本绑定延迟更新

Posted

技术标签:

【中文标题】C# WPF .Net4.8 Framework ReadOnly TextBox 文本绑定延迟更新【英文标题】:C# WPF .Net4.8 Framework ReadOnly TextBox Text Binding Delayed Update 【发布时间】:2022-01-19 16:29:53 【问题描述】:

我有一个绑定到文本框文本属性的字符串“ConnectionStatus”

    private string connectionStatus;
    public string ConnectionStatus
    
        get
        
            return connectionStatus;
        

        set
        
            if (connectionStatus != value)
            
                connectionStatus = value;
                NotifyPropertyChanged("ConnectionStatus");
            
        
    

我有一个连接到 RelayCommand 的按钮:

    void ConnectCmd(object parameter)
    
        ConnectionStatus = "Connecting..";

        // Do some stuff

        ConnectionStatus = "Connected"
    

XML

   <TextBox x:Name="TextBlock_ConectedToName" 
               Grid.Column="1"
               Grid.Row="0"
               Grid.ColumnSpan="2"
               Height="40" 
               Margin="5" 
               FontSize="26"
               IsReadOnly="True"
               HorizontalContentAlignment="Center" 
               VerticalContentAlignment="Center" 
               Text="Binding ConnectionStatus, 
                              UpdateSourceTrigger=PropertyChanged" />

 

当按下按钮时,调用中继命令,然后 将字符串“ConnectionStaus”更新为“Connecting...”,然后我执行 一些处理,打开一个串口,并将 ConnectionStatus 更改为 如果成功,则“已连接”。但是,“正在连接...”文本永远不会 显示,文本更新似乎仅在 RelayCommand 函数完成。如何获取要更新的文本 马上。

【问题讨论】:

【参考方案1】:

您正在默认 ui 线程上的该 relaycommand 中运行您的代码。 UI 在 UI 线程上更新。 它一次只能做一件事。

您可以使您的中继命令异步并暂时释放 ui 线程。使用。

await Task.Delay(20);

不要忘记将 async 放入您的中继命令或使用实现为您执行此操作。

【讨论】:

感谢安迪,解决了它。你是救生员:-)

以上是关于C# WPF .Net4.8 Framework ReadOnly TextBox 文本绑定延迟更新的主要内容,如果未能解决你的问题,请参考以下文章

C# .Net Framework WPF:如何进行 POST 调用并保存登录 Baerer 密钥?

从响应消息 C# .NET 4.8 解析多部分文件

C# 使用 OpenCV 剪切图片中的人物头像

c# winform 打包问题

WPF 多重绑定 .Net Framework 4.0

C#ADO .Net Entities Framework在WPF TreeView中的应用