如何允许在DataGridTextColumn中仅在十进制2之后输入值

时间:2012-11-23 12:07:45

标签: c# wpf datagrid

有没有办法在DatagridTextbox列中只输入十进制2之后的值,并且还限制用户只输入一个小数点?

我的意思是要实现用户只能输入1234.25而非1234.1234之类的内容,并且还可以阻止他们输入类似1234.235.2

之类的内容

2 个答案:

答案 0 :(得分:0)

对您要绑定的值使用String Format属性:

      <DataGridTextColumn Header="Total Cost" Binding="{Binding Path=Total, StringFormat={}{0:N2}}"/>

答案 1 :(得分:0)

看一下这个问题和答案:How to know while user editing the WPF DataGrid Cell is empty?

你也应该处理TextChanged事件,你的代码应该是这样的:

void tb_TextChanged(object sender, TextChangedEventArgs e)
{
   TextBox tb=(TextBox)sender;
   tb.Forground = Brushes.Black;
   int indexOfDot=tb.Text.IndexOf(".");
   if (indexOfDot != -1)
      {
          if (tb.Text.Length>indexOfDot+2)
          {
              //here you can tell the user that this is a wrong format
              //and do other stuff; for example:
              tb.Forground = Brushes.Red;
          }
      }
}

如果您希望用户无法输入错误的格式,请处理OnPreviewKeyDown事件。你可以设置一些其他条件。如果你想要它是双倍的,那么试试这个:

double d;
if (double.TryParse(tb.Text,out d) == false)
{
    e.Handled = true;
}