From 1f136e1e6d82dbfb02e08a39d5eb02dbae1927ca Mon Sep 17 00:00:00 2001 From: Vasil Chimev Date: Mon, 6 Jul 2015 18:43:12 +0300 Subject: [PATCH] Add binding basic test pages. --- CrossPlatformModules.csproj | 3 ++ apps/ui-tests-app/bindings/dbbasics.ts | 62 ++++++++++++++++++++++ apps/ui-tests-app/bindings/dbxmlbasics.ts | 42 +++++++++++++++ apps/ui-tests-app/bindings/dbxmlbasics.xml | 21 ++++++++ apps/ui-tests-app/mainPage.ts | 2 +- 5 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 apps/ui-tests-app/bindings/dbbasics.ts create mode 100644 apps/ui-tests-app/bindings/dbxmlbasics.ts create mode 100644 apps/ui-tests-app/bindings/dbxmlbasics.xml 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 @@ + + + + +