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 文本绑定延迟更新的主要内容,如果未能解决你的问题,请参考以下文章