WPF,MVVM中TextBox,限制输入数字,保留2位小数点,输入超出设定值时,提示

开始是直接绑定interactivity

 
    
       
     

由于我的TEXT 也绑定到后台的,这样是ViewModels更新不是实时的,在get set里也不是直接能判断的。

 /// 
        /// RMS距离D
        /// 
        public float D
        {
            get{ return sk.D; }
            set
            {
                sk.D = value;

          
                this.OnPropertyChanged("D");
            }
        }
  

 

后面直接在.xaml.cs里是

先是

限制输入数字

PreviewTextInput="D_RMS_PreviewTextInput"

      //限制输入数字
        private void D_RMS_PreviewTextInput(object sender, TextCompositionEventArgs e)
        {
            Regex re = new Regex("[^0-9]+");
            // Regex re = new Regex("[^0-9.-]+");//小数点和负号

            e.Handled = re.IsMatch(e.Text);
        }

 

超值提醒, TextChanged="D_RMS_TextChanged"  ,TXET改变事件

 //输入错误时提醒
        private void D_RMS_TextChanged(object sender, TextChangedEventArgs e)
        {
            D_RMS.ScrollToEnd();
            string st = D_RMS.Text;
            string hint = fs.Text;
            if (st == "" || hint=="")
            {
                return;
            }
            int D_vlae = int.Parse(st);
            int fs_vlae = int.Parse(hint);

            int vlae = 40960 / fs_vlae;
            if (D_vlae > vlae)
            {
                if (co1.IsChecked == true)
                {
                    D_hint.Content = "只能输入比" + vlae.ToString() + "小的整数";
                    D_hint. Foreground= new SolidColorBrush(Colors.Red);

                }
            }
            else 
            {
                D_hint.Foreground = new SolidColorBrush(Colors.Black);
                if (co1.IsChecked == true)
                {
                    D_hint.Content = "s/10";
                 }
                else {
                    D_hint.Content = "m";
                }
            }
            D_RMS.ScrollToEnd();

        }

 

 

本来还想在TextChanged写小数点位数限定的,突然想起一个神奇的StringFormat='f2',直接在TEXT,中设置就好了,

 

 

效果

你可能感兴趣的:(C#,UI)