2

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>
4

1 に答える 1