如何访问 Validation.Errors.Count?

How to get access to Validation.Errors.Count?

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

我的 MainWindow.xaml 上有这条线:

 <Button Height="23" Margin="38,63,0,0" Name="button1"
         IsEnabled="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors).Count}" />

我将使用转换器,但我需要知道输入的类型和 return 布尔值。

制作一个 属性 类似于如果计数为 0,则设置 false:

    private bool _enableButton;

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

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

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

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

p.s。请使用比我在示例中使用的名称更有意义的名称

托马斯,

在上面的例子中link,我们可以使用一个带有错误属性的模型对象。

我稍微修改了一下,如果有任何字段出错,我们的错误不为空 - 只有一个字段。

class 现在引发一些事件,以便在表单出现错误 added/removed 时可以对按钮的 IsEnabled 状态进行一些 "real time" 修改:

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

我测试了,可以用,有问题告诉我