2014-10-10 71 views
2

我很抱歉,如果这是一个重复,但我搜索网,都没有找到答案的WinForms数据绑定到自定义属性会引发异常

我试图绑定控件的Enabled(或ReadOnlyTextBox):

this.tbProj.DataBindings.Add(new Binding("Enabled", this, "CanEdit", false, DataSourceUpdateMode.OnPropertyChanged, false)); 
this.btnSave.DataBindings.Add(new Binding("Enabled", this, "Dirty", false, DataSourceUpdateMode.OnPropertyChanged, false)); 

以下属性:

public bool Dirty { get; set; } 

private bool CanEdit 
{ 
    get { return this._CurrentRecord.CanEdit(); } 
} 

我得到System.ArgumentException: Cannot bind to the property or column CanEdit on the DataSource.尝试时到ShowDialog()的表格。

如果我将EnabledReadOnly绑定到Dirty,则一切正常。我试过get { return true; }甚至添加了一个setter:set { bool bummy=value; },同样的错误。我甚至将CanEdit更改为一个自动执行的属性,与Dirty(仅在get; set;声明中)无关...

请帮忙。

感谢您的任何提示和建议。

+1

任何理由物业'CanEdit'必须是'private'?你是否认为它是“公共”? – Rahul 2014-10-10 19:29:46

+0

“Record”类具有执行相同操作的扩展方法,因此“private”是有意的。事实上,所有这些属性都在调用'_CurrentRecord'对象的扩展方法。感谢提示。 – nurchi 2014-10-10 20:01:51

回答

1

该物业是公众:

public bool CanEdit 
{ 
    get { return this._CurrentRecord.CanEdit(); } 
} 
+0

为什么M $不能把这个解释放在异常信息中?谢谢,所有人都像魅力一样工作。 – nurchi 2014-10-10 20:00:18