gpt4 book ai didi

c# - 强制 TextBox 刷新

转载 作者:太空狗 更新时间:2023-10-30 01:05:32 36 4
gpt4 key购买 nike

我有一个普通的 wpf TextBox 控件绑定(bind)到一个字符串属性。我需要在绑定(bind)或 .Text 属性更新后立即更新显示的文本。我试过了

((TextBox)sender).GetBindingExpression(TextBox.TextProperty).UpdateSource();
((TextBox)sender).GetBindingExpression(TextBox.TextProperty).UpdateTarget();

在 TextChanged 事件处理程序中。

我已经在绑定(bind)上尝试了 UpdateSourceTrigger=Explicit。我试过了

Application.Current.Dispatcher.BeginInvoke(
DispatcherPriority.Input,
new Action(() =>
{
statusTextBox.Text = "newValue";
}));

以及它们的许多不同组合。但是显示的文本只有在我从退出更新文本框的方法后才会发生变化。

XAML:

<TextBox x:Name="txBox" Height="150" Margin="0,0,0,0" VerticalAlignment="Top" TextWrapping="Wrap" VerticalScrollBarVisibility="Auto" AcceptsReturn="True"  VerticalContentAlignment="Top" Text="{Binding TextProperty}"Width="200" />

最佳答案

如果你的方法做了很多工作,它可能会控制 UI 线程 () 的执行顺序。无论您在该方法中做什么 - 在后台线程中进行。

private void SomeMethod()
{
Task.Factory.StartNew(() =>
{
/// do all your logic here

//Update Text on the UI thread
Application.Current.Dispatcher.BeginInvoke( DispatcherPriority.Input,
new Action(() => { statusTextBox.Text = "newValue";}));

//continue with the rest of the logic that take a long time
});

只需确保如果在该方法中您正在触摸任何 UI 元素,您是在 UI 线程上进行的,否则会发生崩溃。让 UI 线程知道的另一种可能更好的方法是您希望绑定(bind)了解的 RaisePropertyChanged,而不是直接操作 UI 元素。

关于c# - 强制 TextBox 刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18446785/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com