簡體   English   中英

如何推遲WPF TextBox中的更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM