这是我的视图模型:
public class ViewModelData : INotifyPropertyChanged
{
private decimal? myValue;
public decimal? MyValue
{
get { return myValue; }
set
{
myValue = value;
OnPropertyChanged(nameof(MyValue));
}
}
public event PropertyChangedEventHandler? PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
这是我的文本框:
<TextBox
Name="MyValueBox"
Text="{Binding MyValue, UpdateSourceTrigger=PropertyChanged}"
HorizontalAlignment="Center"
VerticalAlignment="Top"
Width="112"
Margin="0,96,0,0"/>
但是,例如,当我尝试插入值
1.0
时,我可以输入 1
,但稍后无法输入 .
。
相反,我可以写 text1.0
或 10
,然后将光标移动到 1 之后并键入 .
(在 1
和 0
之间)。
为什么?我该如何解决这个问题?
UpdateSourceTrigger=PropertyChanged
意味着您的源属性将在每次按键时设置。并且您不能将
decimal?
设置为值“1”。在 C# 中。因此,您可以删除
UpdateSourceTrigger=PropertyChanged
,以在焦点离开
TextBox
后使用设置源属性的默认行为。或者您可以尝试按照
此处
的建议处理
PreviewTextInput
事件。