c# - 如何推迟 WPF 文本框中的更新

标签 c# wpf

从 .NET 4.5 开始,BindingBase 类现在包含一个 Delay 属性。这允许设置一个整数,表示框架在更新数据源之前将等待的毫秒数。但是,我希望框架在更新 UserControl 之前等待。换句话说,我正在寻找一种方法来实现类似于 Delay 属性的东西,但相反

在我的特定情况下,我有一个绑定(bind)到 Double 值的 TextBox。由于源变化很快,用户无法发现 TextBox 中的值。

我考虑过将 Filter 实现到 IValueConverter 的实现中。不幸的是,这不起作用,因为我在一个列表框中排列了多个文本框。由于它们都使用相同的 ValueConverter 对象,因此我无法将先前值的队列存储到该 ValueConverter 中。

是否有一种通用的方法来过滤 WPF 文本框的文本属性,以便在源值变化非常快时用户可以真正看到内容?

最佳答案

在您的情况下,您可以使用 秒表 来跳过某些更改。

private readonly Stopwatch _watch;
private double _yourValue;

public Ctor()
{
    _watch = Stopwatch.StartNew();
}

public double YourValue
{
    get { return _yourValue; }
    set
    {
        if (Math.Abs(value - _yourValue) < Double.Epsilon) return;
        // Always save value
        _yourValue = value;
        // Only trigger notification after a certain amount of time 
        // (e.g. once every second)
        if (_watch.ElapsedMilliseconds > 1000)
        {
            OnPropertyChanged();
            _watch.Restart();
        }
    }
}

关于c# - 如何推迟 WPF 文本框中的更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29162215/

相关文章:

C# 枚举错误 : is a 'type' , 在给定上下文中无效

wpf - 在 WPF 中,DoubleAnimation UIElement 属性后不能更改?

c# - 如何从本地路径清除图像控件

c# - C# 程序员学习 C++ 的最佳场所

c# - 何时在托管模式和非托管模式下使用 C++

c# - 如何使用 C# 代码实现 100% cpu 负载

wpf - 我们可以将 WinForms 应用程序与 WPF 应用程序集成吗?

c# - 系统字体为 125% 时奇怪的文本缩放

wpf - MVVM 中 ViewModel 的真正目的是什么?

c#判断一个时间段内有多少小时属于特定的小时数