UI data binding: Difference between revisions
Appearance
Content deleted Content added
Added AngularJS to JavaScript framework list |
DanielPharos (talk | contribs) m →Data binding frameworks and tools: Corrected a link |
||
(30 intermediate revisions by 26 users not shown) | |||
Line 1: | Line 1: | ||
{{ |
{{Refimprove|date=February 2015}} |
||
'''UI data binding''' is a [[Design pattern (computer science)|software design pattern]] to simplify development of [[GUI]] applications. UI [[data binding]] binds UI elements to an application [[domain model]]. Most frameworks employ the [[Observer pattern]] as the underlying binding mechanism. To work efficiently, UI data binding has to address [[Data validation|input validation]] and data type mapping. |
'''UI data binding''' is a [[Design pattern (computer science)|software design pattern]] to simplify development of [[GUI]] applications. UI [[data binding]] binds UI elements to an application [[domain model]]. Most frameworks employ the [[Observer pattern]] as the underlying binding mechanism. To work efficiently, UI data binding has to address [[Data validation|input validation]] and data type mapping. |
||
A ''bound control'' is a [[GUI widget|widget]] whose value is tied or [[data binding|bound]] to a field in a [[recordset]] ( |
A ''bound control'' is a [[GUI widget|widget]] whose value is tied or [[data binding|bound]] to a field in a [[recordset]] (e.g., a [[column (database)|column]] in a [[row (database)|row]] of a [[table (database)|table]]). Changes made to data within the control are automatically saved to the database when the control's exit [[event trigger]]s. |
||
== Example == |
|||
<syntaxhighlight lang="xml"> |
|||
<TextBlock Text="{Binding Username}" /> |
|||
</syntaxhighlight> |
|||
<syntaxhighlight lang="csharp"> |
|||
public class ExampleViewModel |
|||
{ |
|||
public string Username { get; set; } |
|||
} |
|||
</syntaxhighlight> |
|||
== Data binding frameworks and tools == |
== Data binding frameworks and tools == |
||
⚫ | |||
===Cocoa & Cocoa Touch=== |
|||
* [[DSharp (data binding)|DSharp]] third-party data binding tool{{cn|date=December 2016}} |
|||
* ReactiveCocoa [https://github.com/ReactiveCocoa/ReactiveCocoa] |
|||
⚫ | |||
⚫ | |||
* LiveBindings [http://docwiki.embarcadero.com/RADStudio/XE4/en/LiveBindings_in_RAD_Studio] |
|||
* [[DSharp]] 3rd party Data Binding tool [https://code.google.com/p/delphisorcery/source/checkout] |
|||
⚫ | |||
=== Java === |
=== Java === |
||
* [[JFace]] Data Binding |
|||
* JSR-227 A Standard Data Binding & Data Access Facility for J2EE [http://jcp.org/en/jsr/detail?id=227] |
|||
* [[JavaFX]] Property<ref>{{Cite web | url=https://docs.oracle.com/javafx/2/binding/jfxpub-binding.htm |title = Using JavaFX Properties and Binding | JavaFX 2 Tutorials and Documentation}}</ref> |
|||
* [[JFace]] Data Binding [http://wiki.eclipse.org/index.php/JFace_Data_Binding] |
|||
* [[JGoodies]] Binding [http://www.jgoodies.com/freeware/libraries/binding/] |
|||
=== .NET === |
=== .NET === |
||
* [[Windows Forms]] data binding overview |
* [[Windows Forms]] data binding overview |
||
* [[Windows Presentation Foundation|WPF]] data binding overview |
* [[Windows Presentation Foundation|WPF]] data binding overview |
||
* Unity 3D data binding framework (available in modifications for NGUI, iGUI and EZGUI libraries) |
* Unity 3D data binding framework (available in modifications for NGUI, iGUI and EZGUI libraries){{cn|date=December 2016}} |
||
=== Flex === |
|||
* Flex data binding [http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7fe7.html] |
|||
=== JavaScript === |
=== JavaScript === |
||
* [[Angular_(web_framework)|Angular]] |
|||
* [http://knockoutjs.com/ knockout.js] |
|||
⚫ | |||
* [http://backbonejs.org/ Backbone.js] |
|||
* [ |
* [[Backbone.js]] |
||
* [ |
* [[Ember.js]] |
||
* Datum.js<ref>{{cite web |url=http://datumjs.com|title=Datum.js|access-date=7 November 2016}}</ref> |
|||
* [http://rivetsjs.com/ Rivets.js] |
|||
* [[knockout.js]] |
|||
* [http://lava.codeplex.com/ Lava JS] |
|||
* [[Meteor (web framework)|Meteor]], via its ''Blaze'' live update engine<ref>{{cite web|title=Meteor Blaze|url=https://www.meteor.com/blaze|quote=Meteor Blaze is a powerful library for creating live-updating user interfaces. Blaze fulfills the same purpose as Angular, Backbone, Ember, React, Polymer, or Knockout, but is much easier to use. We built it because we thought that other libraries made user interface programming unnecessarily difficult and confusing.}}</ref> |
|||
⚫ | |||
* [[OpenUI5]] |
|||
* [[React (JavaScript library)|React]] |
|||
* [[Vue.js]] |
|||
==See also== |
==See also== |
||
*[[Data binding]] |
* [[Data binding]] |
||
==References== |
|||
{{Reflist}} |
|||
[[Category:Data management]] |
[[Category:Data management]] |
||
[[Category:Software design patterns]] |
[[Category:Software design patterns]] |
||
{{compu-prog-stub}} |
{{compu-prog-stub}} |
Latest revision as of 16:47, 20 September 2021
This article needs additional citations for verification. (February 2015) |
UI data binding is a software design pattern to simplify development of GUI applications. UI data binding binds UI elements to an application domain model. Most frameworks employ the Observer pattern as the underlying binding mechanism. To work efficiently, UI data binding has to address input validation and data type mapping.
A bound control is a widget whose value is tied or bound to a field in a recordset (e.g., a column in a row of a table). Changes made to data within the control are automatically saved to the database when the control's exit event triggers.
Example
[edit]<TextBlock Text="{Binding Username}" />
public class ExampleViewModel
{
public string Username { get; set; }
}
Data binding frameworks and tools
[edit]- DSharp third-party data binding tool[citation needed]
- OpenWire Visual Live Binding - third-party visual data binding tool
Java
[edit].NET
[edit]- Windows Forms data binding overview
- WPF data binding overview
- Unity 3D data binding framework (available in modifications for NGUI, iGUI and EZGUI libraries)[citation needed]
JavaScript
[edit]- Angular
- AngularJS
- Backbone.js
- Ember.js
- Datum.js[2]
- knockout.js
- Meteor, via its Blaze live update engine[3]
- OpenUI5
- React
- Vue.js
See also
[edit]References
[edit]- ^ "Using JavaFX Properties and Binding | JavaFX 2 Tutorials and Documentation".
- ^ "Datum.js". Retrieved 7 November 2016.
- ^ "Meteor Blaze".
Meteor Blaze is a powerful library for creating live-updating user interfaces. Blaze fulfills the same purpose as Angular, Backbone, Ember, React, Polymer, or Knockout, but is much easier to use. We built it because we thought that other libraries made user interface programming unnecessarily difficult and confusing.