首页 新闻 赞助 找找看

WPF的绑定和 WinForm的绑定的区别?

0
悬赏园豆:20 [已解决问题] 解决于 2015-04-23 17:07

WinForm的绑定,例如绑定DataTable  就已经能够实现 界面和数据的双向连动,即改数据源,界面也会相应的发生变化,改界面上数据源也会发生相应的变化..

反观WPF 为了实现双向连动,需要实现 INotifyPropertyChanged,这样的好处是什么? 

WPF
RabbitYi的主页 RabbitYi | 初学一级 | 园豆:10
提问于:2015-04-20 23:32
< >
分享
最佳答案
0

1、WinForm的绑定,例如绑定DataTable  就已经能够实现 界面和数据的双向连动,即改数据源,界面也会相应的发生变化,改界面上数据源也会发生相应的变化..

WPF 也可以直接绑定 DataTable,也能实现你上面所述的效果,不用实现 INotifyPropertyChanged ,因为这是集合类型。

2、WinForm 中当需要双向绑定属性时也需要实现 INotifyPropertyChanged 接口来支持双向绑定,比如绑定 TextBox。

class Rabbit_Yi_ViewModel : INotifyPropertyChanged

{

    private string _text;

    public string Text {get{return _text;} set{ if(_text != value){ _text = value;this.OnPropertyChanged("Text");}}};

 

public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged(string propertyName)         {             if (this.PropertyChanged != null)                 this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));         }


}

 

BindingSource bs = new BindingSource();

Rabbit_Yi_ViewModel vm = new Rabbit_Yi_ViewModel;

bs.DataSource = typeof(Rabbit_Yi_ViewModel);

this.textBox1.DataBindings.Add(new Binding("Text",vm,"Text",true,DataSourceUpdateMode.OnPropertyChanged);

收获园豆:10
Launcher | 高人七级 |园豆:45045 | 2015-04-21 10:44

是的。。grid绑定DataTable 我们项目之前有做过双向绑定的。。能达到效果的

RabbitYi | 园豆:10 (初学一级) | 2015-04-22 16:49

@Rabbit_Yi: 那你还有什么问题吗?

Launcher | 园豆:45045 (高人七级) | 2015-04-22 16:53
其他回答(3)
0

我记得不太一样,买本书好好看看吧

+小马哥++ | 园豆:906 (小虾三级) | 2015-04-21 08:53

肯定不太一样啊。关键是我想知道为什么 WPF搞一套 Binding 这么麻烦,比以前WinForm的还麻烦,这样真的好吗?

支持(0) 反对(0) RabbitYi | 园豆:10 (初学一级) | 2015-04-21 09:31
0

winform只是部分控件有这样的特性吧。wpf是只要实现了这个接口的都具有该特性。

幻天芒 | 园豆:37175 (高人七级) | 2015-04-21 09:15

是的,但如果将winform的其它控件也做成这样的特性,不就更简单了吗?(DataTable 具有这样的特性,绑定文本框下拉框,Grid 都是可以实现双向连动的)

因为控件就那么些,但业务对象可是有很多个的? 这样是不是反而增加了工作量呢,他这个有什么特殊的吗?

支持(0) 反对(0) RabbitYi | 园豆:10 (初学一级) | 2015-04-21 09:28

@Rabbit_Yi: 为什么就需要双向绑定呢?需要再用,这是原则。而且,winform那个年代,双向绑定也不流行。

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2015-04-21 09:53

@幻天芒: 貌似你滑懂我的意思。。我是在做比较。。

支持(0) 反对(0) RabbitYi | 园豆:10 (初学一级) | 2015-04-22 16:46

@Rabbit_Yi: 好吧,Launcher 大神的答案很犀利。

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2015-04-22 16:58
0

NET 2.0之前,是松绑定

之后才开始出现INotifyPropertyChanged,也就是说是编程技术发展的需要。

 

你说的Winform绑定DataTable的事实是假的,

WinForm的绑定,例如绑定DataTable  就已经能够实现 界面和数据的双向连动,即改数据源,界面也会相应的发生变化,改界面上数据源也会发生相应的变化.


这是错误的描述,经常使用Winform编程的,在这上面已经掉进坑里好几回的应该。

据我所知,你说的事情正好相反,修改Datatable,界面上的数据并不会跟着变化。

而修改界面,DataTable是会跟着变化的。

这就是单向绑定。。。

 

如果你也曾经被Bindingsource坑过的话,你就会知道WPF里面实现INotifyPropertyChanged接口有什么好处了。

收获园豆:10
爱编程的大叔 | 园豆:30839 (高人七级) | 2015-04-21 10:33

对,改了Grid,你要做一些动做才能到数据更新到Datable,就是你说的BingingSource  。。也能实现需求的

支持(0) 反对(0) RabbitYi | 园豆:10 (初学一级) | 2015-04-22 16:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册