0

WinJS.UI.ListViewWindows-8 Metro インターフェイスの JavaScript プロジェクトでを使用しています。

これは HTML コードです。

<div id="myMain">
    <div id="myListTemplate" data-win-control="WinJS.Binding.Template">
        <div class="myListViewItem">
            <p data-win-bind="innerText: description"></p>
        </div>
    </div>
    <div id="myListView"
        data-win-control="WinJS.UI.ListView"
        data-win-options="{ itemTemplate: myTemplate, layout: {type: WinJS.UI.ListLayout} }">
    </div>
 </div>

JavaScript の一部:

ready: function (element, options) {
            // Set up the ListView.
            var myLView = myListView.winControl;
            WinJS.UI.setOptions(favoritesLView, {
                itemDataSource: dataSource,
                oniteminvoked: this.onItemInvoked.bind(this),
                selectionMode: WinJS.UI.SelectionMode.none
            });
        },

dataSourceリスト情報が格納されている場所。以下から取得したリストです。 var myList = new WinJS.Binding.List(myJSONarray);

コードは横向きと縦向きのビューで機能しますが、スナップ ビューでは機能しません。myListすべての要素があるにもかかわらず、リスト ビューは空に見えます。

これは Windows 8 のバグですか? それを解決するための回避策を知っている人はいますか?私は同じ問題でこのリンクを見つけましたが、その解決策は私にとってはうまくいきません:

4

1 に答える 1

0

ListView が表示されない理由の 1 つは、要素または親要素の表示が「なし」に設定されている場合です。要素が再び表示されるようになったら、listView.forceLayout() を呼び出す必要があります。MSDN の以下の説明を参照してください。 http://msdn.microsoft.com/en-us/library/windows/apps/hh758352.aspx

ListView またはその親要素の style.display プロパティを "none" に設定すると、アプリはそれらの要素に関するレイアウト情報を破棄します。表示プロパティの値を、すべてが再び表示されるスタイルに戻すと、アプリはすべての要素をレイアウトしますが、ListView は現在のレイアウトに関する情報を受信せず、レイアウトが無効になります。ListView を再度表示するときにこの関数を呼び出すことで、問題を解決できます。

于 2013-01-10T15:35:49.633 に答える