数据绑定、IDataErrorInfo和复杂属性命名

本文关键字:属性 复杂 IDataErrorInfo 数据绑定 | 更新日期: 2023-09-27 18:01:01

假设我有MyClass.cs,其中有一个名为Name的属性,然后我有一个继承IDataErrorInfo的viewModel,我在这个viewModel中创建了MyClass的多个实例,并将它们全部添加到ObservableCollection<MyClass>,这个集合将是DataGrid的ItemsSource,并且它的一个DataGridTextColumn绑定到Name属性,这真的很好,就像下面的XAML 一样

<DataGridTextColumn Binding="{Binding  Name}" Header="Name" IsReadOnly="True" />

一切都好,现在我需要为IDataErrorInfo提供一个列名,如下

string IDataErrorInfo.this[string columnName]
    {
        get 
        { 
           string error = String.Empty;
           switch (columnName)
           {
               case "WhatToPutHere":
                   error = validateName();
                   return error;
               default:
                   throw new ApplicationException("Wrong Property name being validated");
           }
        }
    }

问题是,我的viewModel中没有这个"Name"属性,它在MyClass.cs上,所以我不知道该用什么来提供IDataErrorInfo列名,我尝试了Name和MyClass。Name都不起作用,有什么建议吗??提前感谢

数据绑定、IDataErrorInfo和复杂属性命名

属性的名称。在这种情况下,它是Name

如果你不确定在那里放什么,为什么不放一行测试代码,比如msgbox(列名(。然后运行你的应用程序(或部分应用程序(,看看会弹出什么。希望这能有所帮助。

我想明白了,我必须在MyClass.cs上实现IDataErorInfo,而不是在viewModel 上