[英]How to postpone an update in a WPF TextBox
從.NET 4.5開始,BindingBase類現在包含Delay
屬性。 這樣可以設置一個整數,該整數表示Framework在更新數據源之前將等待的毫秒數。 但是,我希望Framework在更新UserControl之前等待。 換句話說,我正在尋找一種方法來實現類似於Delay
屬性的東西,但反過來說 。
在我的特定情況下,我有一個綁定到Double值的TextBox。 由於源快速變化,用戶無法在TextBox中發現值。
我想過將一個Filter實現到IValueConverter
的實現中。 不幸的是,這不起作用,因為我在ListBox中排列了幾個TextBox。 由於它們都使用相同的ValueConverter-Object,因此我無法將先前值的隊列存儲到該ValueConverter中。
是否有一種通用的方法來過濾WPF TextBox的Text屬性,以便用戶可以在源值快速變化時實際看到內容?
在您的情況下,您可以使用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();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.