diff --git a/CrossPlatformModules.csproj b/CrossPlatformModules.csproj
index a9ef953d7..b254d4a22 100644
--- a/CrossPlatformModules.csproj
+++ b/CrossPlatformModules.csproj
@@ -208,6 +208,8 @@
+
+
@@ -699,6 +701,7 @@
Designer
+
diff --git a/apps/ui-tests-app/bindings/dbbasics.ts b/apps/ui-tests-app/bindings/dbbasics.ts
new file mode 100644
index 000000000..7bcbbdef5
--- /dev/null
+++ b/apps/ui-tests-app/bindings/dbbasics.ts
@@ -0,0 +1,62 @@
+import pageModule = require("ui/page");
+import buttonModule = require("ui/button");
+import textFieldModule = require("ui/text-field");
+import stackLayoutModule = require("ui/layouts/stack-layout");
+import observableModule = require("data/observable");
+
+export function createPage() {
+
+ var page = new pageModule.Page();
+ var stack = new stackLayoutModule.StackLayout();
+ var sourceOneWay = new observableModule.Observable();
+ var sourceTwoWay = new observableModule.Observable();
+ var targetOneWay = new textFieldModule.TextField();
+ var targetTwoWay = new textFieldModule.TextField();
+ var buttonOneWay = new buttonModule.Button();
+ var buttonTwoWay = new buttonModule.Button();
+
+ // OneWay Binding
+
+ var bindingOptionOneWay = {
+ sourceProperty: "textSource",
+ targetProperty: "text",
+ twoWay: false
+ };
+
+ targetOneWay.bind(bindingOptionOneWay, sourceOneWay);
+ sourceOneWay.set("textSource", "OneWay");
+
+ buttonOneWay.on(buttonModule.Button.loadedEvent, function () {
+ buttonOneWay.text = sourceOneWay.get("textSource");
+ });
+ buttonOneWay.on(buttonModule.Button.tapEvent, function () {
+ buttonOneWay.text = sourceOneWay.get("textSource");
+ });
+
+ stack.addChild(targetOneWay);
+ stack.addChild(buttonOneWay);
+
+ // TwoWay Binding
+
+ var bindingOptionTwoWay = {
+ sourceProperty: "textSource",
+ targetProperty: "text",
+ twoWay: true
+ };
+
+ targetTwoWay.bind(bindingOptionTwoWay, sourceTwoWay);
+ sourceTwoWay.set("textSource", "TwoWay");
+
+ buttonTwoWay.on(buttonModule.Button.loadedEvent, function () {
+ buttonTwoWay.text = sourceTwoWay.get("textSource");
+ });
+ buttonTwoWay.on(buttonModule.Button.tapEvent, function () {
+ buttonTwoWay.text = sourceTwoWay.get("textSource");
+ });
+
+ stack.addChild(targetTwoWay);
+ stack.addChild(buttonTwoWay);
+
+ page.content = stack;
+ return page;
+}
\ No newline at end of file
diff --git a/apps/ui-tests-app/bindings/dbxmlbasics.ts b/apps/ui-tests-app/bindings/dbxmlbasics.ts
new file mode 100644
index 000000000..40a5fa4bb
--- /dev/null
+++ b/apps/ui-tests-app/bindings/dbxmlbasics.ts
@@ -0,0 +1,42 @@
+import buttonModule = require("ui/button");
+import stackLayoutModule = require("ui/layouts/stack-layout");
+import textFieldModule = require("ui/text-field");
+import observable = require("data/observable");
+
+export function stack0Loaded(args: observable.EventData) {
+ var source = new observable.Observable();
+ var stack0 = args.object;
+ var target = stack0.getViewById("tf");
+ var button = stack0.getViewById("btn");
+ var bindingOptions = {
+ sourceProperty: "textSource",
+ targetProperty: "text",
+ twoWay: true
+ };
+ target.bind(bindingOptions, source);
+ source.set("textSource", "Text");
+
+ button.on(buttonModule.Button.tapEvent, function () {
+ button.text = source.get("textSource");
+ });
+}
+
+export function stack1Loaded(args: observable.EventData) {
+ var stack1 = args.object;
+ stack1.bindingContext = { text: "Label" };
+}
+
+export function stack2Loaded(args: observable.EventData) {
+ var stack2 = args.object;
+ stack2.bindingContext = {
+ myProperty: "Button",
+ myFunction: () => {
+ console.log("### onTap event ###");
+ }
+ };
+}
+
+export function stack3Loaded(args: observable.EventData) {
+ var stack3 = args.object;
+ stack3.bindingContext = { myItems: [{ text: "Label1" }, { text: "Label2" }] };
+}
\ No newline at end of file
diff --git a/apps/ui-tests-app/bindings/dbxmlbasics.xml b/apps/ui-tests-app/bindings/dbxmlbasics.xml
new file mode 100644
index 000000000..0c26426b2
--- /dev/null
+++ b/apps/ui-tests-app/bindings/dbxmlbasics.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/apps/ui-tests-app/mainPage.ts b/apps/ui-tests-app/mainPage.ts
index 8f2ccfda5..4b05362b8 100644
--- a/apps/ui-tests-app/mainPage.ts
+++ b/apps/ui-tests-app/mainPage.ts
@@ -10,7 +10,7 @@ import trace = require("trace");
trace.enable();
trace.setCategories(trace.categories.Test);
-var list: string[] = ["pages", "layouts", "modal-view"];
+var list: string[] = ["pages", "layouts", "modal-view", "bindings"];
// basePath is auto-changed when building multiple apps
var basePath = "";