各种WPF绑定模式有哪些?

DAT*_*OZA 74 data-binding wpf

我不了解WPF中的各种数据绑定模式,例如:

  • 单程
  • 双向
  • 一度
  • 等等...

这些模式中的每一种意味着什么?

什么时候应该使用它们?

Dav*_*ave 137

  • OneWay:当您希望绑定属性更新用户界面时使用此选项.
  • TwoWay:这与行为OneWayOneWayToSource组合具有相同的行为.绑定属性将更新用户界面,并且用户界面中的更改将更新绑定属性(您可以将其与a TextBoxCheckbox例如一起使用.)
  • OneTime:这具有相同的行为,OneWay除了它只会更新一次用户界面.这应该是绑定的默认选择(由于各种原因我不在这里详细说明),如果你真的需要额外的功能,你应该只使用其他类型的绑定.
  • OneWayToSource:这是相反的OneWay- 用户界面值更改更新绑定属性.

如果未指定任何内容,则行为将取决于您使用的控件.

有关详细信息,请参阅BindingModeMSDN上的枚举.

  • @DATT:“指定”是什么意思?基本上,如果在XAML中设置Mode = TwoWay,则在更改GUI值时,它将自动更新C#属性。但是,您需要将代码背后的属性实现在实现INotifyPropertyChanged接口的类(如ViewModel)中。当后面的代码通过set更改属性的值时,您需要调用PropertyChanged,以便GUI收到有关值更改的通知,并且GUI会自动更新。 (2认同)

Jam*_*mes 31

绑定由两个实体组成:

  1. 源(通常是MVVM场景中的ViewModel)
  2. 目标(UI控件)

目标必须是DependencyObject(用于绑定工作),源可以是一个DependencyObject或它应该有一些机制来模仿WPF绑定系统关于它被更改(INotifyPropetyChnaged实现接口).


MVVM建议ViewModel项目不受任何View相关引用的影响,因此建议使用INotifyPropertyChangedinterface来使WPF绑定听到Source对象.绑定发生在Source的属性和Target的属性之间(必须是a DependencyProperty).例如TextProperty,TextBox类的类是DataBound到(例如)UserName视图模型的属性.WPF绑定提供了四种类型的绑定.请记住,Binding在UI线程上运行,除非您另行指定运行.

  1. OneWay:target属性将侦听要更改的源属性并将自行更新.如果以编程方式更改ViewwModel的UserName属性,它将反映在文本框中.这是中间成本,因为绑定系统仅监视Source的变化.
  2. TwoWay:target属性将侦听要更改的源属性并将自行更新.AND source属性将侦听正在更改的目标属性并将自行更新.无论是TextPropertyUserName属性将保持同步,如果一个变化将更新对方.这是最昂贵的,因为绑定系统必须观察双方的变化.
  3. OneWayToSource:如果更改目标属性,Source属性将更改.如果用户更改了TextPropertyUserName属性,则该属性将占用更改的值.这又是中间成本,因为绑定系统仅监视Target的变化.
  4. OneTime:在Binding的生命周期内只发生一次,当Binding发生时,Target属性将使用Source属性更新.这是最便宜的,并且建议您显示静态数据,例如Label,TextBlock等等.

如果您没有提及任何内容,则每个目标属性都具有与其自身关联的默认绑定模式.例如TextProperty,a的TextBox默认绑定模式为TwoWay.对于它来说TextProperty,TextBlock这是一种方式.

建议您选择正确的模式,因为它可以帮助您减少应用程序延迟,尤其是在UI中有大量控件的情况下.

欲了解更多关于MVVM 这里是我写的一篇文章.