永远不会调用C#WPF IDataErrorInfo索引器

时间:2017-09-22 16:13:03

标签: wpf c#-4.0 idataerrorinfo

我尝试使用IDataErrorInfo实现简单验证并遇到问题 - 永远不会调用IDataErrorInfo索引器。我在TextBox验证具有指定范围的数值,类型验证工作正确,但范围验证不起作用。 C#代码:

public interface IDataErrorInfo
{
    string Error { get; }
    string this[string columnName] { get; }
}

public class Bounds:IDataErrorInfo
{
    int lbw = 0;

    public int LBW
    {
        get { return lbw; }
        set { lbw = value; }
    }


    public string this[string columnname]
    {
        get
        {
            string error = String.Empty;
            switch(columnname)
            {
                case "LBW":
                    if (0 >= lbw || 500 < lbw)
                    {
                        error = "out of range";
                    }
                    break;
            }
            return error;
        }
    }
    public string Error
    {
        get { return null; }
    }
}

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        Bounds bounds = new Bounds(rolletBoundLbwBox);
        rolletBoundGrid.DataContext = bounds;

    }
}

xaml 代码:

<Grid x:Name="rolletBoundGrid" Background="#FFE5E5E5">
        <TextBox x:Name="rolletBoundLbwBox" HorizontalAlignment="Left" Height="26" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Margin="164,10,0,0"  Text="{Binding LBW, NotifyOnValidationError=True, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"/>
 </Grid>

你看到问题的原因吗?

1 个答案:

答案 0 :(得分:1)

您是否正在实施内置 System.ComponentModel.IDataErrorInfo界面?

public class Bounds: System.ComponentModel.IDataErrorInfo
...

如果您实现自己的自定义界面恰好命名为&#34; IDataErrorInfo&#34;

,那么它不起作用。