title: How do data binding engines work under the hood?
body: <p>Technically, how does data binding engines work under the hood? Especially, how does the mechanism of the "synchroniser" in data binding look like and work like?</p>
  
  <p>In many frameworks like in .NET, Java, Flex, etc, they provide a data binding engine. I have been just using the API calls, and so every thing is easy for me since all I have to do was to make calls to the API.</p>
  
  <p>Now, I am interested in perhaps trying to write a relatively simple data binding engine for a game that I am working on. Although I'm using C#, I have reasons for not being able to use the built-in WinForms and data binding engine (see background info below for reason). Since I can't use the existing data binding engine in C#, I thought I may have to write one on my own. So, I need to know the nitty gritty details of how data binding usually works under the hood. By this, I don't mean how to use data binding in C#. I mean, how does the data binding work internally and architecturally. </p>
  
  <p>I tried to search the web for tutorials and articles on data binding but most of the results came to me as being how to use the existing data binding in C#, which isn't what I want.</p>
  
  <p>So, before I could start planning on writing my own data binder, I thought I would need to know how does data binding engines work under the hood? And even more importantly, how does the mechanism of the "synchroniser" in data binding engine look and work like, ie, how are the data kept synchronised all the time be it in a one-way or two-way binding?</p>
  
  <p><em>Some bit of background information of why I asked this question:</em></p>
  
  <p>A while ago, I made a <a href="https://stackoverflow.com/questions/12947775/how-can-i-do-data-binding-in-code-with-c">question</a> on how I could use data binding in C# for UIs that are not using the standard WinForms. The answer I got was that the data binding engine in C# is tightly coupled with the WPF/Windows Forms UI. So, I guess I cannot use the existing data binding engine in C#, and have to probably create one on my own. The purpose of this is for a game and I'm working on. Games usually have its own custom UI (non-WinForm). My intention is to setup a MVVM-like design for the UI and gameobjects within the game.</p>