如何访问Validation.Errors.Count?

时间:2015-11-02 17:37:42

标签: c# wpf validation xaml binding

我在CodeProject上进行了一个示例:"Automatically validating business entities in WPF using custom binding and attributes"我想添加一个在没有错误时启用的按钮。

我在MainWindow.xaml上有这一行:

"K"

我将使用转换器,但我需要知道输入的类型并返回一个布尔值。

2 个答案:

答案 0 :(得分:0)

制作一个类似于count为0的属性,设置为false:

    private bool _enableButton;

    public bool ButtonEnabled
    {
        get { return _enableButton; }
        set { _enableButton= value; }
    }

在控制器代码中的某处,设置:

 ButtonEnabled = (items.Count == 0) ? false : true;

然后在您的xaml代码中,您不需要转换器只需适当地绑定它。

P.S。请使用更有意义的名字然后我的例子

答案 1 :(得分:0)

托马斯,

在上面链接的示例中,有一个我们可以使用的具有Error属性的模型对象。

我稍微更改了一下,如果错误中有任何字段,则错误不为空 - 只有一个字段。

该类现在引发了一些事件,以便在向表单添加/删除错误时,可以对按钮的IsEnabled状态进行一些“实时”修改:

public class User : IDataErrorInfo, INotifyPropertyChanged
{
    public string Error
    {
        get
        {
            return this["Name"];
        }
    }

然后按钮上的绑定仅为:

    <Button 
        IsEnabled="{Binding Path=Error, 
                            Converter={StaticResource stringToBooleanConverter}}" />

如果转换器存在:

class StringToBooleanConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        String s = value as String;
        return String.IsNullOrEmpty(s);
    }
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

我测试过,它有效,告诉我是否有任何问题