簡體   English   中英

C# WPF.Net4.8 框架只讀TextBox文本綁定延遲更新

[英]C# WPF .Net4.8 Framework ReadOnly TextBox Text Binding Delayed Update

我有一個綁定到文本框文本屬性的字符串“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”更新為“正在連接...”,然后我進行一些處理,打開一個串口,如果成功則將 ConnectionStatus 更改為“已連接”。 但是,永遠不會顯示“正在連接...”文本,文本更新似乎僅在 RelayCommand function 完成時觸發。 如何讓文本立即更新。

您正在默認 ui 線程上的該 relaycommand 中運行您的代碼。 UI 在 UI 線程上更新。 它一次只能做一件事。

您可以使您的中繼命令異步並暫時釋放 ui 線程。 使用。

await Task.Delay(20);

不要忘記將 async 放入您的中繼命令或使用實現為您執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM