Silverlight “更改默认值”;“输入的格式不正确”;RIA服务中的验证错误
当输入的格式不正确时,我试图更改Silverlight数据网格中的默认错误消息。例如,在数字字段中键入字母。当你把标签移开时,它会说“输入的格式不正确”。我已经看到了如何解决这个问题,也就是说,在上面添加一个带有自定义错误消息的验证属性。问题是,我的对象来自RIA服务。它似乎忽略了来自验证属性的自定义错误消息。我需要做些什么来揭露这件事吗?提前感谢。听起来您没有为对象设置元数据。Silverlight “更改默认值”;“输入的格式不正确”;RIA服务中的验证错误,silverlight,datagrid,wcf-ria-services,validationattribute,Silverlight,Datagrid,Wcf Ria Services,Validationattribute,当输入的格式不正确时,我试图更改Silverlight数据网格中的默认错误消息。例如,在数字字段中键入字母。当你把标签移开时,它会说“输入的格式不正确”。我已经看到了如何解决这个问题,也就是说,在上面添加一个带有自定义错误消息的验证属性。问题是,我的对象来自RIA服务。它似乎忽略了来自验证属性的自定义错误消息。我需要做些什么来揭露这件事吗?提前感谢。听起来您没有为对象设置元数据。 这将为您创建它,并将注释带到silverlight项目。验证属性/元数据属性在这里没有帮助,因为错误发生在控件上,而
这将为您创建它,并将注释带到silverlight项目。验证属性/元数据属性在这里没有帮助,因为错误发生在控件上,而不是属性上。 控件无法调用类型为
int
(或任何其他数字类型)的setter,因为无法转换字符串值。
我还想知道您可以更改默认错误消息
一种可能的解决方法是使用仅允许数字输入的自定义文本框,如下所示:
public class NumericTextBox : TextBox
{
public NumericTextBox()
{
this.KeyDown += new KeyEventHandler(NumericTextBox_KeyDown);
}
void NumericTextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Back || e.Key == Key.Shift || e.Key == Key.Escape || e.Key == Key.Tab || e.Key == Key.Delete)
return;
if (e.Key < Key.D0 || e.Key > Key.D9)
{
if (e.Key < Key.NumPad0 || e.Key > Key.NumPad9)
{
e.Handled = true;
}
}
}
}
公共类NumericTextBox:TextBox
{
公共数字文本框()
{
this.KeyDown+=新的KeyEventHandler(NumericTextBox\u KeyDown);
}
void NumericTextBox_KeyDown(对象发送方,KeyEventArgs e)
{
如果(e.Key==Key.Back | e.Key==Key.Shift | e.Key==Key.Escape | e.Key==Key.Tab | e.Key==Key.Delete)
返回;
如果(e.KeyKey.D9)
{
如果(e.KeyKey.NumPad9)
{
e、 已处理=正确;
}
}
}
}
唯一有效的解决方案是(这是在客户端):
然后绑定到MyField\u字符串而不是MyField
public partial class MyEntity
{
public string MyField_string
{
get
{
return MyField.ToString();
}
set
{
decimal res = 0;
var b = Decimal.TryParse(value, out res);
if (!b)
throw new ArgumentException("Localized message");
else
this.MyField = Math.Round(res, 2);
}
}
partial void OnMyFieldChanged()
{
RaisePropertyChanged("MyField_string");
}
}