【问题标题】:data-binding, IDataErrorInfo and complex properties naming数据绑定、IDataErrorInfo 和复杂属性命名
【发布时间】:2011-07-02 13:19:57
【问题描述】:

假设我有 MyClass.cs,其中有一个名为 Name 的属性,然后我有我的 viewModel,它继承了 IDataErrorInfo,我在这个 viewModel 中创建了 MyClass 的多个实例并将它们全部添加到 ObservableCollection 中,这个集合将是 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都没有成功,有什么建议吗? 提前致谢

【问题讨论】:

    标签: c# .net wpf mvvm idataerrorinfo


    【解决方案1】:

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

    【讨论】:

    • 它不起作用,我没有一个名为 Name 的属性,它是 MyClass 的一个字段,我只是在这里创建它的一个实例,我正在实现 IDataErrorInfo ,所以有没有这样的财产
    【解决方案2】:

    如果你不确定该放什么,为什么不放一行测试代码,例如 msgbox(columnname)。然后运行您的应用程序(或其中的一部分)并查看弹出的内容。希望这会有所帮助。

    【讨论】:

    • 感谢您的回答,但我的意思是不知道该放什么:我已经用“MyClass.Name”和“Name”进行了测试,两者都不起作用
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      • 2015-07-11
      • 2010-10-15
      相关资源
      最近更新 更多