WinJS ビュー コードと Windows ランタイム コンポーネント ビューモデル コードの間でデータ バインディングを機能させることができないようです。これについて話しているサイトへの提案やポインタはありますか?
私は Xaml/C# のバックグラウンドを持っていますが、UI (別名ビュー) を HTML/WinJS にする必要があります。そのため、HTML/WinJS を Xaml + C#-Codebehind と同様のビューとして扱っています。しかし、それ以外はすべて C# コードを使用して記述したいと考えています。そのため、Windows ランタイム コンポーネント プロジェクトから ViewModel を作成し、WinJS でローカル変数を設定して ViewModel のインスタンスを表します。ただし、ViewModel で単純な文字列プロパティにバインドしようとすると、次の JavaScript 例外が発生します。
例外は、ms-appx://microsoft.winjs.1.0/js/base.js 0x800a13d5 の行 8652、列 17 で JavaScript ライブラリ コードによってキャッチされようとしています - JavaScript ランタイム エラー: プロパティ '_getObservable' を定義できません: オブジェクトはありません拡張可能なファイル: base.js、行: 8652、列: 17
ViewModel インスタンスを取得してバインディングを処理する home.js ファイルのコードは次のとおりです。
(function () {
"use strict";
var _viewModel;
WinJS.UI.Pages.define("/pages/home/home.html", {
// This function is called whenever a user navigates to this page. It
// populates the page elements with the app's data.
ready: function (element, options) {
// TODO: Initialize the page here.
_viewModel = ViewModels.ViewModelLocator.viewModelTest;
WinJS.Namespace.define("Application.Pages.Home", { "ViewModel": _viewModel });
WinJS.Binding.processAll(null, Application.Pages.Home.ViewModel);
}
});
})();
また、data-win-bind 属性を使用した単純な home.html コードは次のとおりです。
<section aria-label="Main content" role="main" data-win-bindsource="Application.Pages.Home">
<h2 data-win-bind="innerText: ViewModel.testString"></h2>
<h3>Test String Property: <span data-win-bind="innerText: testString"></span></h3>
<button id="changeTestStringButton">Change testString value</button>
</section>