我有一个数据网格,其中有一个关闭整型的quantity字段。现在我想限制我的用户只输入正整数。我不想要一个处理datagrid键事件的输入的解决方案。有什么建议吗?
这是我正在使用的转换器
public class ValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{ return value; }
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (!OnlyPositiveIntergerAllowed(value.ToString()))
{
string s = Regex.Replace(value.ToString(), @"[^0-9]+", string.Empty);
if(s=="")
return 0;
else
return s;
}
if (value is string && (string)value == "")
{
return 0;
}
return value;
}
private static bool OnlyPositiveIntergerAllowed(string text)
{
var regex = new Regex("[^0-9]+"); //regex that matches disallowed text
return !regex.IsMatch(text);
}
}注意:它工作正常(例如,如果是123dasd。它在丢失的焦点上转换),但I允许用户输入(dasd.)。
发布于 2012-11-17 00:45:48
对于这种情况,您可以在Extended WPF Toolkit中使用DataGridTemplateColumn和IntegerUpDown。
示例:
<DataGridTemplateColumn Header="Amount">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<toolkit:IntegerUpDown
Minimum="0"
Value="{Binding Amount}"
/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>您也可以使用DecimalUpDown。
发布于 2012-11-17 18:31:26
您所寻求的解决方案称为验证。
搜索WPF validation会提供大量链接,这里有一个看起来很不错的链接:http://wpftutorial.net/DataValidation.html
https://stackoverflow.com/questions/13416790
复制相似问题