0

独自のスクロール バーを表示しない ListView を WinJS に表示したいと考えています。代わりに、親コンテナーに水平に成長させたいです。私が実装した方法は、基本的に、ListView で最小幅の css プロパティを設定することです。初期ロードでは、これは問題なく機能します。バッキング データ ソース (この場合は WinJS.Binding.List) に追加のデータが読み込まれると、ListView が要素を描画してサイズを変更することを期待します。代わりに、ListView は要素を描画し、独自のスクロール水平バーを追加します。約 1 ~ 2 秒後、突然 ListView のサイズが自動的に変更され、親コンテナーに収まります。

要素が追加された直後にこのサイズ変更を行うにはどうすればよいですか? すべてのアイテムを再描画し、この ListView に多くの要素を入力しているため、強制レイアウトは機能しません。

4

2 に答える 2

0

リストビューコントロールでloadingStateChangedイベントをリッスンする必要があるというドミニクに同意します。すぐに起動しない可能性があります。その場合、リストに進行状況要素を表示し、再描画されるのを待ってから、進行状況を削除します。

于 2012-11-21T20:07:38.117 に答える
0

div のオーバーフローを検出する方法で見つけた手法を使用しました。基本的に、すべての新しいデータ項目を追加した後、ListView div がオーバーフローしなくなるまで、ListView の親 div のサイズを確実に増やします。

編集:この投稿の結果としてのアドバイスのため、最終的にはこの戦略に反対することにしました。組み込みの Grid プロジェクト テンプレートを見て、リスト ビューが画面全体に適切に収まるようにする方法を見つけました。以下のCSSを使用しました。

#listid{
    height: 100%;
    position: relative;
    width: 100%;
    z-index: 0;
}
#section[role=main]{
    margin-left: 0;
}

#listid .win-horizontal.win-viewport .win-surface {
    margin-left: 120px;
    margin-right: 115px;
}
于 2012-11-21T16:11:39.443 に答える