MenuItems should inherit binding context when defined form XML

This commit is contained in:
vakrilov
2015-03-31 12:36:04 +03:00
parent de8cc0d419
commit 70aa10d7ea
2 changed files with 25 additions and 2 deletions

View File

@@ -27,6 +27,7 @@ import LabelModule = require("ui/label");
import stackLayoutModule = require("ui/layouts/stack-layout");
import helper = require("../helper");
import view = require("ui/core/view");
import builder = require("ui/builder");
export function addLabelToPage(page: PageModule.Page, text?: string) {
var label = new LabelModule.Label();
@@ -68,6 +69,15 @@ export function test_menuItem_inherit_bindingContext() {
}
}
export function test_menuItem_inherit_bindingContext_inXML() {
var p = <PageModule.Page>builder.parse("<Page><Page.optionsMenu><MenuItem text=\"{{ myProp }} \" /></Page.optionsMenu></Page>");
p.bindingContext = { myProp: "success" };
var menuItem = p.optionsMenu.getItemAt(0);
TKUnit.assertEqual(menuItem.text, "success", "menuItem.text");
};
export function test_Setting_OptionsMenu_doesnt_thrown() {
var page: PageModule.Page;
@@ -392,4 +402,4 @@ export var test_cssShouldBeAppliedAfterChangeToAllNestedElements = function () {
finally {
helper.goBack();
}
}
}

View File

@@ -206,7 +206,20 @@ export class OptionsMenu implements dts.OptionsMenu {
}
public setItems(items: Array<MenuItem>) {
this._items = items;
if (this._items === items) {
return;
}
// Remove all existing items
while (this._items.length > 0) {
this.removeItem(this._items[this._items.length - 1]);
}
// Add new items
for (var i = 0; i < items.length; i++) {
this.addItem(items[i]);
}
this.invalidate();
}