【发布时间】:2018-03-22 15:23:48
【问题描述】:
我将以下文本框绑定到 MVVM ViewModel
文本框
<TextBox Height="71" Width="341"
Text="{Binding BalanceValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, StringFormat=N2}"
Margin="0,2,2,2" HorizontalAlignment="Right"/>
下面是我的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
}
在大多数情况下,这是有效的,除了在测试时,TextBox 在我打字时会自行更新。我应该为TextBox 使用不同的事件吗?
【问题讨论】:
-
您希望它的表现如何?目前,您告诉 ViewModel 每次文本框的属性更改时更新,它会立即解析值、更新并通知视图属性已更改。您是希望它在您移除焦点时更新,还是在更新之前有延迟?
-
我希望
_BalanceValue在用户输入完文本后更新 -
为什么要在已经是
double的值上使用double.Parse? -
在这种情况下 - 我认为 Jack 在下面的回答是正确的。
-
在属性设置器中,
value将与属性的类型相同。如果将鼠标悬停在它上面,您应该会看到类型。