我刚刚升级了使用CSLA到.NET 4.0的旧.NET 1.1 Winforms应用程序以及支持使用INotifyPropertyChanged界面的更高版本的CSLA。
这样做的很大一部分原因是数据绑定改进了 - 例如能够在绑定时更新更改,而不是在验证时更新(标签关闭)。
我有自定义用户控件,NumberBox。从本质上讲,它只是一个文本框,其中包含一些属性,如数字类型,小数位等。我已经公开了一个名为BindableValue的 object 类型的公共属性。正是这个属性我绑定了我的CSLA类(标准.NET类继承验证规则,属性改变和各种东西)整数属性,在这种特殊情况下它的类属性是整数。
我升级的问题如下:
自从我做了WinForms之后已经有一段时间了,所以我有点亏本从哪里开始。任何提示和解决方案都将非常感激。
修改 我已经尝试了很多不同的事情,而且无处可去,现在变得非常令人沮丧:
答案 0 :(得分:2)
[你也可以在我的公司博客上阅读这个经历 - OCC Blog - Binding woes]
我终于想通了,所以我想在这里分享一下,为了拯救别人拖延浏览谷歌的繁琐工作,阅读许多回复说他们有效,但在.NET 4.0中似乎不再适用。
好吧,我在Google上阅读的很多内容都告诉我,我的usercontrol必须使用EventHandler或PropertyChangedEventHandler委托来更改事件 - 不同的页面表示不同的委托。我试过了 - 失败!
我在.NET 4.0中所做的事情实际上要好得多。就像我的类一样,我绑定了我的usercontrol,我必须实现INotifyPropertyChanged接口。然后在我的usercontrol中,当我想要回到我的源对象时,我刚刚提出了PropertyChanged事件(例如PropertyChanged(“BindableValue”);)定义了接口,并且hey presto再次与世界相处得很好。
上面的内容更为优雅,但不幸的是,谷歌索引的文章,论坛和帖子还没有赶上.NET 4.0,因此所有现有的东西都会让你陷入死胡同和挫折之中。我希望这能节省很多时间。