[英]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.