文本框在输入时自动更新

jDa*_*984 0 c# wpf xaml mvvm

我将以下文本框绑定到 MVVM ViewModel

文本框

<TextBox Height="71" Width="341" 
         Text="{Binding BalanceValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, StringFormat=N2}"
         Margin="0,2,2,2" HorizontalAlignment="Right"/>
Run Code Online (Sandbox Code Playgroud)

下面是我ImportPresenter处理输入的内容。

Public Class ImportPresenter : ObservableObject
{
    private double _BalanceValue = 0;

    public double BalanceValue
    {
        get
        {
            return _BalanceValue;
        }
        set
        {
            _BalanceValue = double.Parse(value.ToString(), 
                            System.Globalization.NumberStyles.Currency);
            RaisePropertyChangedEvent("BalanceValue");
        }
    }//END BALANCEVALUE
}
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,这是有效的,除了测试时,它TextBox会在我打字时自行更新。我应该使用不同的事件吗TextBox

ASh*_*ASh 5

在某些情况下,更新LostFocus每个视图模型PropertyChanged同样不方便。(例如,输入搜索关键字 - 我们不想在每个字母后运行搜索,我们希望在用户停止输入时执行搜索 - 但他们不会离开搜索字段)

由于 .net 4.5Binding类具有Delay属性(以毫秒为单位):

Text="{Binding BalanceValue, Mode=TwoWay, Delay=333, UpdateSourceTrigger=PropertyChanged, StringFormat=N2}"
Run Code Online (Sandbox Code Playgroud)

为了避免每次击键都更新源对象,请将 Delay 属性设置为合理的值,以使绑定仅在用户停止键入后经过该时间后更新。