我们正在编写Windows应用商店应用。许多数据处理和聚合是在WinRT组件中完成的,UI是用WinJS / HTML编写的。我们遇到的主要问题之一是WinJS无法绑定到WinRT对象。具体来说,WinJS运行时抛出一个异常,它无法扩展WinRT对象。这是一行代码,试图在数据对象上定义一个新属性。这适用于WinJS对象,因为它们是动态的。 WinRT不是这样。我可以绑定的唯一方法是通过oneTime绑定,因为这不会尝试从WinRT对象中创建一个Observable对象。 WinRT对象可以实现某种接口以支持单向甚至双向绑定吗?
答案 0 :(得分:2)
不,如果没有创建自己的包装器,这是不可能的:
答案 1 :(得分:2)
我不需要担心双向绑定,但下面描述的类似代码对我来说很有用。注意:请不要遵循显示的JS方法命名约定。
public sealed class Stock
{
//... other private/internal methods/members
private String _symbol;
public string Symbol
{
get
{
return this._symbol;
}
}
}
_makeBindable: function (obj) {
var o = new Object();
for (m in obj) {
o[m] = obj[m];
}
return o;
}
var projectedStockObj = getStockObjFromWinRTComponent();
var bindableStockObj = _makeBindable(projectedStockObj);
// ... use bindableStockObj in binding scenario(s)
此解决方案创建一个新对象并将WinRT成员添加到其中(也包含其值)。