Jua*_*uan 5 .net c# data-binding winforms
我有一个属性的控件,public MyClass MyProperty{...}其值在屏幕上显示为图形.我希望MyClass通过使用Binding类可以将此属性绑定到程序中的任何其他属性(MyProperty将是此构造函数中的propertyName参数,另一个将是参数). BindingMyClassdataMember
MyClassINotifyPropertyChanged这方面的实施一切都很好.但是如果我没有实现get访问器MyProperty并尝试将其绑定到它上面,我会得到一个"无法绑定到目标控件上的属性'MyProperty'.参数名称:PropertyName"错误.
这是否意味着我必须实现一个get访问,即使我知道我永远不会需要阅读它的价值,我想一个单向(源到目标)结合,即使我刚刚返回null的get访问?
我猜这个Binding类使用它来比较旧值或者做一些其他内部的东西.我不确定,如果返回是一个好主意null,或者最好始终保留随set访问者分配的最后一个对象的副本并将其返回到get访问者中.也许我真的甚至不需要写一个get访问器而我正在做其他错误的事情.只是当我注释掉get访问者并且在我把它放回去时停止获取它时,我才会收到错误.
编辑:如果有任何混淆:当我说MyProperty屏幕上的值显示为图形时,我并不是说它有一个其他代码读取并显示在屏幕上的值.没有人从中读取任何价值MyProperty.MyProperty的set访问是在屏幕上绘制的东西的一个,这就是周期的结束.
我不是100%肯定我理解你的意思,但我认为你遇到的例外源于Binding类的CheckBinding功能(反映):
if (descriptor.IsReadOnly && (this.controlUpdateMode != ControlUpdateMode.Never))
{
throw new ArgumentException(SR.GetString("ListBindingBindPropertyReadOnly", new object[] { this.propertyName }), "PropertyName");
}
Run Code Online (Sandbox Code Playgroud)
因此,改变绑定的ControlUpdateMode,以ControlUpdateMode.Never可能是你在找什么
| 归档时间: |
|
| 查看次数: |
2448 次 |
| 最近记录: |