我刚刚升级了一个使用CSLA的旧.NET 1.1WinForms应用程序到.NET 4.0,以及支持使用INotifyPropertyChanged接口的更高版本的INotifyPropertyChanged。
这样做的很大一部分原因是数据库的改进--例如,能够在绑定时更新更改,而不是在验证(选项卡)时更新。
我有自定义用户控件,NumberBox。本质上,它只是一个文本框,有一些属性,如数字类型、小数位等等。我公开了对象类型的公共属性BindableValue。正是这个属性将我的CSLA类(继承验证规则的标准.NET类、属性更改等)整型属性绑定到它,在这种情况下,类属性是整数。
我升级后的问题如下:
我已经有一段时间没有做WinForms的事情了,所以我有点不知所措。任何提示以及解决方案都将不胜感激。
编辑:--我尝试过许多不同的东西,但进展很快,现在变得非常令人沮丧:
发布于 2012-12-19 13:28:10
[你也可以在我的公司博客上读到这段经历-- OCC博客-装订问题 ]
我终于想出了答案,所以我想在这里分享它,以拯救其他人在谷歌上搜索拖网的单调乏味,读到很多回应说它们有效,但在.NET 4.0中似乎不再适用了。
好吧,我在谷歌上读到的很多东西都告诉我,我的用户控件必须使用EventHandler或PropertyChangedEventHandler委托更改事件--不同的页面表示不同的委托。我都试过了-失败了!
我在.NET 4.0中所做的实际上要好得多。简单地说,就像我的类绑定我的用户控件一样,我必须实现INotifyPropertyChanged接口。然后,在我的用户控件中,当我想要向后推回我的源对象时,我只是引发了PropertyChanged事件(例如,PropertyChanged("BindableValue");)定义的接口和嘿presto都与这个世界再次友好相处。
上面这是一个更优雅,但不幸的是,谷歌索引的文章,论坛和帖子还没有赶上这个.NET 4.0,所以所有现有的东西将导致你的死胡同和很多挫折。我希望这能帮别人节省很多时间。
https://stackoverflow.com/questions/13553592
复制相似问题