x:绑定数据验证

时间:2016-07-08 02:12:49

标签: validation data-binding inotifypropertychanged uwp-xaml

我在Windows Universal App中使用x:BindINotifyPropertyChanged将类属性绑定到TextBox控件中嵌入的ListView。 class属性的类型为double,我想阻止用户输入string。我遇到的问题是,使用双向数据绑定时,在用户输入无效输入之前我会处理它之前会抛出异常。

2 个答案:

答案 0 :(得分:0)

您好,您可以在双向bindig属性set方法中验证它。像这样:

private double number;
public double Number
{
    get
    {
        return number;
    }
    set
    {
        double tempNumber;
        if (double.TryParse(value.ToString(), out tempNumber))
        {
            number = value;
        }
        else
        {
            number = 0.0;
        }

        RaisePropertyChange(nameof(Number));
    }
}

希望这有帮助。

答案 1 :(得分:0)

我无法写评论,那么:在绑定中使用值转换器怎么样? TextBox控件只接受字符串作为其值,因此如果你想在ViewModel / Code-Behind中使用double,则需要使用一个值转换器将TextBox的字符串值解析为double,反之亦然。

转换器可以是这样的:

public class DoubleToStringConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        return value.ToString()
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        var parsed = false;
        var parsedValue = 0.0;
        if (double.TryParse(value.ToString(), out parsedValue)
        {
            return parsedValue;
        }
        else
        {
            return -1.0;
        }
    }
}

对于验证,您可以定义一系列"有效值"当属性发生变化时,在ViewModel中查看它