我不了解WPF中的各种数据绑定模式,例如:
- 单程
- 双向
- 一度
- 等等...
这些模式分别是什么意思?
什么时候应该使用它们?
Answers:
OneWay
:当您希望bound属性更新用户界面时,请使用它。TwoWay
:这与OneWay
和具有相同的行为OneWayToSource
。bound属性将更新用户界面,并且用户界面中的更改将更新bound属性(例如,您可以将其与TextBox
或一起使用Checkbox
。)OneTime
:这具有与行为相同的行为,OneWay
除了只会更新用户界面一次。这应该是绑定的默认选择(由于各种原因,我将在这里不做详细介绍),如果您确实需要额外的功能,则只能使用其他类型的绑定。OneWayToSource
:这与OneWay
-相反-用户界面值更改会更新bound属性。如果您未指定任何内容,则行为将取决于您使用的控件。
有关更多信息,请参见BindingMode
MSDN上的枚举。
绑定由两个实体组成:
目标必须是一个DependencyObject
(用于绑定才能工作),源必须是一个,DependencyObject
或者源必须具有某种机制来模仿有关更改的WPF绑定系统(INotifyPropetyChnaged
实现接口)。
MVVM建议ViewModel项目中不包含任何与View相关的引用,因此建议使用INotifyPropertyChanged
interface使WPF绑定听到Source对象。绑定发生在Source属性和Target属性之间(必须是DependencyProperty
)。例如TextProperty
,TextBox
该类的是UserName
视图模型的DataBound(say)属性。WPF绑定提供四种类型的绑定。记住,除非在其他情况下指定绑定运行,否则绑定将在UI线程上运行。
UserName
属性,它将反映在文本框中。这是中等成本,因为装订系统仅监视更改源。TextProperty
和UserName
属性将保持同步,并且如果两者发生更改,则彼此会更新。这是最昂贵的,因为装订系统必须注意双方的变化。TextProperty
,则该UserName
属性将使用更改后的值。这又是中间成本,因为装订系统仅监视目标以进行更改。Label
,TextBlock
等等。如果您什么都没有提及,则每个目标属性都有一个与之关联的默认绑定模式。例如,TextProperty
的的TextBox
默认绑定模式为TwoWay
。对于TextProperty
的TextBlock
是一种方法。
建议您选择正确的模式,因为它可以帮助您减少应用程序延迟,尤其是在UI中包含大量控件的情况下。
有关MVVM的更多信息,这是我写的一篇文章。