diff --git a/CrossPlatformModules.csproj b/CrossPlatformModules.csproj index 863c5fdb7..8bafda30a 100644 --- a/CrossPlatformModules.csproj +++ b/CrossPlatformModules.csproj @@ -198,6 +198,7 @@ + file-name-resolver.d.ts diff --git a/apps/ui-tests-app/pages/listview_binding.ts b/apps/ui-tests-app/pages/listview_binding.ts new file mode 100644 index 000000000..7a2f9ad0f --- /dev/null +++ b/apps/ui-tests-app/pages/listview_binding.ts @@ -0,0 +1,23 @@ +import pageModule = require("ui/page"); +import gridLayoutModule = require("ui/layouts/grid-layout"); +import listViewModule = require("ui/list-view"); +import observable = require("data/observable"); +import observableArr = require("data/observable-array"); + +var arr = new observableArr.ObservableArray(); +for (var i = 0; i < 100; i++) { + arr.push("item " + i); +} + +export function createPage() { + var page: pageModule.Page = new pageModule.Page(); + var grid: gridLayoutModule.GridLayout = new gridLayoutModule.GridLayout(); + var listView: listViewModule.ListView = new listViewModule.ListView(); + listView.on(listViewModule.ListView.loadedEvent, function (args: observable.EventData) { + (args.object).items = arr; + }); + grid.addChild(listView); + page.content = grid; + + return page; +} \ No newline at end of file diff --git a/ui/core/bindable.ts b/ui/core/bindable.ts index 13fdc8de8..071b9183d 100644 --- a/ui/core/bindable.ts +++ b/ui/core/bindable.ts @@ -49,6 +49,7 @@ export class Bindable extends dependencyObservable.DependencyObservable implemen var bindingSource = source; if (!bindingSource) { bindingSource = this.bindingContext; + binding.sourceIsBindingContext = true; } if (!types.isNullOrUndefined(bindingSource)) { binding.bind(bindingSource); @@ -102,8 +103,7 @@ export class Bindable extends dependencyObservable.DependencyObservable implemen for (var p in this._bindings) { binding = this._bindings[p]; - var sourceIsNotBindingContext = (binding.source && (binding.source.get() !== oldValue)); - if (binding.updating || sourceIsNotBindingContext) { + if (binding.updating || !binding.sourceIsBindingContext) { continue; } @@ -122,6 +122,7 @@ export class Bindable extends dependencyObservable.DependencyObservable implemen export class Binding { options: definition.BindingOptions; updating = false; + sourceIsBindingContext: boolean; source: WeakRef; target: WeakRef; diff --git a/ui/list-view/list-view-common.ts b/ui/list-view/list-view-common.ts index 6403e9ff6..5a55f14f3 100644 --- a/ui/list-view/list-view-common.ts +++ b/ui/list-view/list-view-common.ts @@ -123,7 +123,10 @@ export class ListView extends view.View implements definition.ListView { public _getDefaultItemContent(index: number): view.View { var lbl = new label.Label(); - lbl.text = this._getDataItem(index) + ""; + lbl.bind({ + targetProperty: "text", + sourceProperty: "$value" + }); return lbl; }