代码之家  ›  专栏  ›  技术社区  ›  markzzz

为什么不能在TextBox中插入小数?

  •  0
  • markzzz  · 技术社区  · 1 年前

    这是我的ViewModel:

    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 ).

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

    1 回复  |  直到 1 年前
        1
  •  1
  •   mm8    1 年前

    背景 UpdateSourceTrigger=PropertyChanged 在绑定上意味着每次按键时都会设置源属性。你不能设置 decimal? 到C#中的值“1.”。

    所以你可以移除 UpdateSourceTrigger=属性已更改 使用焦点离开后设置源属性的默认行为 TextBox .

    或者你可以试着处理 PreviewTextInput 建议的活动 here .