提问者:小点点

C#WPF。Net4。8框架只读文本框文本绑定延迟更新


我有一个字符串“连接状态”,它绑定到一个文本框文本属性

    private string connectionStatus;
    public string ConnectionStatus
    {
        get
        {
            return connectionStatus;
        }

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

我有一个连接到继电器命令的按钮:

    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”更新为“Connections…”,然后我进行一些处理,打开一个串行端口,如果成功,将ConnectionStatus更改为“Connected”。然而,“连接…”文本从不显示,文本更新似乎仅在RelayCommand函数完成时触发。如何让文本立即更新。


共1个答案

匿名用户

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

你可以让你的relay命令异步,并释放ui线程。使用。

await Task.Delay(20);

不要忘记把异步放在你的中继命令中,或者使用一个实现来实现它。

相关问题