43
A
回答
81
OneWay
:当你想绑定的属性来更新用户界面使用此功能。TwoWay
:这与OneWay
和OneWayToSource
相同。绑定属性将更新用户界面,并在用户界面的变化将更新绑定属性OneTime
(你会使用这个具有TextBox
或例如Checkbox
):这有相同的行为OneWay
除了它会只更新一次用户界面。这应该是您绑定的默认选择(出于各种原因,这里我不会详细说明),如果您确实需要额外的功能,则应该只使用其他类型的绑定。OneWayToSource
:这与OneWay
相反 - 用户界面值更改会更新绑定属性。
如果您不指定任何内容,则行为将取决于您使用的控件。请参阅BindingMode
enum on MSDN。
16
A结合由两个实体组成:
- 的源(典型视图模型中MVVM场景)
- 的目标(UI控制)
目标具有成为DependencyObject
(用于绑定工作),并且源可以是DependencyObject
或者它应该有一些模仿WPF绑定系统的机制m关于它被改变(实现INotifyPropetyChnaged
接口)。
MVVM建议视图模型项目是从任何查看相关引用免费,因此建议使用INotifyPropertyChanged
界面,使通过WPF结合正在审理源对象。 绑定发生在来源属性和属性目标(必须是DependencyProperty
)。 例如TextBox
类的TextProperty
是DataBound到(说)UserName
视图模型的属性。 WPF绑定提供了四种类型的绑定。请记住,绑定在UI线程上运行,除非您指定它以其他方式运行。
- 单向:该目标属性会听源属性被更改,并会自动更新。如果以编程方式更改ViewwModel的
UserName
属性,它将反映在文本框中。这是中间成本,因为绑定系统仅针对来源进行更改。 - 双向:target属性会听源属性被更改,并会自动更新。 AND source属性将侦听正在更改的目标属性并将自行更新。
TextProperty
和UserName
属性都将保持同步,并且会在更改时互相更新。这是最昂贵的,因为绑定系统必须观察双方的变化。 - OneWayToSource:如果目标属性更改Source属性会发生变化。如果用户更改
TextProperty
,则UserName
属性将占用更改的值。这也是中间成本,因为绑定系统仅针对目标进行更改。 - 一次性:此结合,在目标属性将与源时绑定发生更新财产一生中只发生一次。这种方法成本最低,适用于需要显示静态数据的情况。
Label
,TextBlock
等
如果你不提任何东西,每目标财产具有的与其自身相关的默认绑定模式。例如。 TextBox
的TextProperty
的默认绑定模式为TwoWay
。对于TextBlock
的TextProperty
这是一种方式。
您选择合适的模式,因为它可以帮助你减少特别是在你有你的UI大量的控制情况下的应用程序延迟这是不可取的。
更多关于MVVM here是我写的一篇文章。
相关问题
- 1. WPF绑定产生各种控件
- 2. 各种MaxMind GeoIP缓存模式的功能是什么?
- 3. 什么是这种模式
- 4. 各种JS模板;为什么两个{?
- 5. 以各种各样的方式绑定成员函数
- 6. 这个WPF绑定是什么意思?
- 7. WPF绑定默认模式
- 8. 什么是3种绑定上下文?
- 9. 什么是各种AccuRev版本号?
- 10. 什么是cx_Freeze和Python的各种build_exe_options?
- 11. 是什么各种Web服务器
- 12. WPF Programaticlly绑定两种方式
- 13. 什么是模拟各种用户接入
- 14. 这种模式的名称是什么?
- 15. 这种模式的名字是什么?
- 16. 这种模式的名称是什么?
- 17. 定义脚本的各种方式有什么不同?
- 18. 各种剪贴板/拖放格式的含义是什么?
- 19. 我可以处理未来[Option [user]]的各种模式是什么?
- 20. 什么是可用的方式来处理各种模型的轨道状态
- 21. 采用JSON并分配给各种属性/ innerHTML的好模式是什么?
- 22. 各种WCF绑定使用什么特定端口进行通信?
- 23. wpf绑定的种类
- 24. 各种格式的设计模式
- 25. 为什么WPF绑定以两种不同的方式处理INotifyPropertyChanged?
- 26. 这种模式叫什么?
- 27. 这种模式叫什么?
- 28. 这种模式叫什么?
- 29. 什么是声明式数据绑定?
- 30. WPF - MVVM - 各种视图创建技术的优缺点是什么?
谢谢。这是有帮助的... 但PLZ指定TwoWay的例子...我想知道它如何反映代码隐藏。 – 2010-02-21 08:27:47
@DATT:“指定”是什么意思?基本上,如果在XAML中设置Mode = TwoWay,当您更改GUI值时,它将自动更新C#属性。但是您的代码隐藏属性需要在实现INotifyPropertyChanged接口的类(如ViewModel)中实现。当代码隐藏通过设置更改属性的值时,您需要调用PropertyChanged,以便通知GUI该值更改,并自动更新它自己。 – Dave 2010-02-21 21:45:33
如果您未指定任何内容,则行为将取决于您正在使用的“属性”。 – sam 2016-03-21 08:35:36