【问题标题】:C# WPF .Net4.8 Framework ReadOnly TextBox Text Binding Delayed UpdateC# WPF .Net4.8 Framework ReadOnly TextBox 文本绑定延迟更新
【发布时间】: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 函数完成。如何获取要更新的文本 马上。

【问题讨论】:

    标签: c# wpf data-binding relaycommand


    【解决方案1】:

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

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

    await Task.Delay(20);
    

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

    【讨论】:

    • 感谢安迪,解决了它。你是救生员:-)
    猜你喜欢
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多