为什么无法在文本框中插入小数?

问题描述 投票:0回答:1

这是我的视图模型:

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
之间)。

为什么?我该如何解决这个问题?

c# wpf textbox decimal
1个回答
0
投票
在绑定上设置

UpdateSourceTrigger=PropertyChanged

 意味着您的源属性将在每次按键时设置。并且您不能将 
decimal?
 设置为值“1”。在 C# 中。

因此,您可以删除

UpdateSourceTrigger=PropertyChanged

,以在焦点离开 
TextBox
 后使用设置源属性的默认行为。

或者您可以尝试按照

此处

的建议处理
PreviewTextInput事件。

© www.soinside.com 2019 - 2024. All rights reserved.