use*_*291 2 .net data-binding wpf winforms
与过去的数据绑定框架相比,WPF数据绑定框架发生了哪些根本性的变化?
我从根本上强调了这个术语,即架构而非技术.当然它带来了改进,但我对这些框架的进化性,可维护性和可扩展性以及AGNOSTICISM(PORTABILITY)更感兴趣,那就是我在PARADIM层面.
为什么我无法看到一些UML模式真正抽象出WPF数据绑定的本质,与之前的数据绑定框架相比,看看它是否只是技术,还是真正的PARADIGM改进.
来自Windows Forms世界,这些是我到目前为止发现的WPF数据绑定的优点:
DataContext并且绑定Paths是单独指定的,并且绑定DataContext以分层方式(与其父级)查找它,如果它没有自己指定的那个.
这样的优点可以通过例如ListViews和DataTemplates 来看出; 前者可以指定数据源(DataContext),而后者定义如何显示源项的属性(指定的via Path).
(没有与此一个可能出现的问题,顺便说一句.:据我所知,有一个在XAML没有办法确保在编译时,这两个DataContext并Path指同一类型的对象.)
Paths可能比简单的属性名称更复杂.这在绑定到XML时可能最有用(您可以指定XPath表达式来引用数据),而不是绑定到POCO.
WPF似乎没有Windows Forms数据绑定上的一些恼人的问题:
请参阅我之前的问题在没有InvokeRequired的多线程场景中Winforms数据绑定到业务对象?- IIRC,即使使用WPF,仍然需要一些工作才能从后台线程获得更新(通过Dispatcher),但从我看到的情况来看,事情比Winforms更好.我记得Jason Dolinger关于MVVM模式的视频中有一个例子.
(编辑:在这方面,自Winforms以来,事情实际上并没有发生太大的变化.BeginInvoke只是被Dispatcher类所取代,这使表面上的事情变得更好,但从根本上说它仍然是相同的机制.)
Winforms数据绑定:可以使用TypeConverter而不是Format/Parse事件吗?-绑定完成的值转换比使用Winforms更容易,因为值转换器可以直接在XAML中指定; 在Winforms中,您只能通过绑定本身定义的Format/Parseevents进行值转换; 您不能直接在Windows窗体设计器中指定值转换器.因此,您需要在代码隐藏中设置绑定; 这意味着您需要按名称引用UI控件; 这至少部分地打破了View和Presenter的分离(如果你正在尝试使用MVP模式).不太好.
Winforms中不存在命令.您必须使用后面代码中的事件和事件处理程序(例如saveButton_Clicked)来代替命令.现在,如果您想将所有逻辑委派给Presenter类(同样,在MVP设置中),您将手动将事件(例如从View中单击按钮)转发到Presenter.在WPF中,数据绑定由ICommand/ 的可用性补充RoutedCommand,这使得这个过程变得更加容易.
| 归档时间: |
|
| 查看次数: |
873 次 |
| 最近记录: |