有没有办法只在 DatagridTextbox 列中输入小数点 2 后的值,并且还限制用户只输入一个小数点?
我的意思是实现用户只能输入类似的东西1234.25
,而不是1234.1234
,并且还阻止他们输入类似的东西1234.235.2
也对要绑定的值使用 String Format 属性:
<DataGridTextColumn Header="Total Cost" Binding="{Binding Path=Total, StringFormat={}{0:N2}}"/>
看看这个问题和答案: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;
}