我不了解WPF中的各种数据绑定模式,例如:
- 单程
- 双向
- 一度
- 等等...
这些模式分别是什么意思?
什么时候应该使用它们?
Answers:
OneWay:当您希望bound属性更新用户界面时,请使用它。TwoWay:这与OneWay和具有相同的行为OneWayToSource。bound属性将更新用户界面,并且用户界面中的更改将更新bound属性(例如,您可以将其与TextBox或一起使用Checkbox。)OneTime:这具有与行为相同的行为,OneWay除了只会更新用户界面一次。这应该是绑定的默认选择(由于各种原因,我将在这里不做详细介绍),如果您确实需要额外的功能,则只能使用其他类型的绑定。OneWayToSource:这与OneWay-相反-用户界面值更改会更新bound属性。如果您未指定任何内容,则行为将取决于您使用的控件。
有关更多信息,请参见BindingModeMSDN上的枚举。
绑定由两个实体组成:
目标必须是一个DependencyObject(用于绑定才能工作),源必须是一个,DependencyObject或者源必须具有某种机制来模仿有关更改的WPF绑定系统(INotifyPropetyChnaged实现接口)。
MVVM建议ViewModel项目中不包含任何与View相关的引用,因此建议使用INotifyPropertyChangedinterface使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的更多信息,这是我写的一篇文章。