Add the WeakKeyDictionary to hold the WeakSource and small UI changes.
Refactor the BindingEngine, add the Unit test, clear-up the codes.