3

当输入格式不正确时,我正在尝试更改 Silverlight DataGrid 中的默认错误消息。例如,您在数字字段中键入字母。当您离开时,它会显示“输入格式不正确”。我已经看到了如何解决这个问题,那就是在其上放置一个带有自定义错误消息的验证属性。问题是,我的对象来自 RIA 服务。它似乎忽略了我的验证属性中的自定义错误消息。我需要做些什么来揭露这个吗?提前致谢。

4

3 回答 3

1

验证属性/元数据属性在这里没有帮助,因为错误发生在控件上而不是属性上。控件无法调用类型int(或任何其他数字类型)的设置器,因为无法强制转换字符串值。我还想知道您可以更改默认错误消息...

一种可能的解决方法是使用仅允许数字输入的自定义文本框,如下所示:

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;
            }
        } 
    }
}
于 2011-08-31T08:36:54.577 回答
0

听起来您没有为对象设置元数据。 在 silverlight 中使用元数据进行验证 这将为您创建它并将注释带到 silverlight 项目。

于 2011-08-31T01:42:45.413 回答
0

唯一可行的解​​决方案是这个(这是在客户端):

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");
    }
}

然后绑定到 MyField_string 而不是 MyField。

于 2013-05-13T16:31:24.513 回答