从.NET 4.5开始,BindingBase类现在包含Delay
属性。这样可以设置一个整数,该整数表示Framework在更新数据源之前将等待的毫秒数。但是,我希望Framework在更新UserControl之前等待。换句话说,我正在寻找一种方法来实现类似Delay
属性的东西,但以其他方式。
在我的特定情况下,我有一个绑定到Double值的TextBox。由于源快速变化,用户无法在TextBox中发现值。
我考虑将过滤器实现为IValueConverter
的实现。不幸的是,这不起作用,因为我在ListBox中排列了几个TextBox。由于它们都使用相同的ValueConverter-Object,因此我无法将先前值的队列存储到该ValueConverter中。
是否有一种通用的方法来过滤WPF TextBox的Text属性,以便当源值变化非常快时,用户可以看到内容?
答案 0 :(得分:-1)
在您的情况下,您可以使用Stopwatch
来跳过某些更改。
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();
}
}
}