問題タブ [virtualizingstackpanel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
9981 参照

c# - 仮想化 ItemsControl の要素へのスクロール

ItemsControlアイテムを に表示し、仮想ScrollViewer化を行う があります。私はそれScrollViewerを含む(オフスクリーン、したがって仮想化された)アイテムにスクロールしようとしています。ただし、アイテムは仮想化されているため、実際には画面上に存在せず、位置もありません (IIUC)。

子要素を試してみBringIntoViewましたが、スクロールして表示されません。TransformToAncestorまた、 、 、TransformBoundsおよびを使用して手動で実行しようとしましScrollToVerticalOffsetたが、TransformToAncestor決して返されません (仮想化のために、位置がないためだと思いますが、その証拠はありません) と、実行されない後のコード。

仮想化を使用してアイテムにスクロールすることは可能ItemsControlですか? もしそうなら、どのように?

0 投票する
0 に答える
185 参照

c# - VirtualizingStackPanel を継承し、InternalChildren.Count がゼロを返す

要素を配置するための追加ロジックを実装します。

MeasureOverride と ArrangeOverride をオーバーライドします。StackPanel から継承すると、すべてが機能します。親としての VirtualizingStackPanel には当てはまりません。デバッグにより、要素のコンテナがまだ生成されていないかのように、InternalChildren.Count がゼロを返すことが明らかになりました。VSPの何かが恋しいです。そして、それは仮想化だと思います。誰でもこれで私を助けることができますか?

PS 継承の両方のバリアントが ItemsControl.ItemsPanel に対してテストされました

0 投票する
1 に答える
334 参照

windows-phone-7 - WP7リストボックス表示方法より多くのアイテムをロード

私は、Windows Phone7ListBoxVirtualizingStackPanelがデフォルトでメモリを最適化するために使用することを知っています。

ただし、ビューモデルにアイテムを追加すると、リストボックスにそれらの新しいアイテムが表示されません。それらを表示するには、上にスクロールしてから下にスクロールする必要があります。

私のビューモデルは実装しますIList

このガイドのように、周りの多くの記事にこの問題があります

これを修正する方法は?

0 投票する
3 に答える
726 参照

windows-phone-7 - WP7リストボックスUI仮想化の仕組み

VirtualizingStackPanelデフォルトでUI仮想化をサポートすると言われているを持っているListBoxを使用しています。

ただし、listStudent(タイプObservableCollectionが5人のStudentが含まれている)を設定ItemsSourceすると、Listbox。次に、ユーザーが最後までスクロールするたびに、listStudentにさらに5人の学生を追加します(もちろんUIに通知されます)。しかし、消費されるメモリは増え続けていることがわかります。StackPanel記憶の面でも違いはありません

UI仮想化はどのように機能しますか?listStudentに新しいアイテムを追加するときにメモリを低く保つ方法は?

0 投票する
1 に答える
580 参照

windows-phone-7 - ListBoxのControlTemplateをスタイルするときに仮想化を維持する方法は?

スタイリングが正しくないとListBox、仮想化が失われることを読みました。この質問に対する notacat の回答として、彼の解決策は OK です。

ItemsPresenter をGridBorder、 ...などの別のコンテナに入れるたびに気づきます。

ListBox仮想化はすぐに失われます。TextBlockしかし、 beforeを配置したいのですがItemsPresenterScrollViewerは 1 つの子要素しか受け入れません。

これに対処する方法は?

更新: この投稿を見ました。Derek LakinはそれTextBlockScrollViewerテンプレートに配置することですが、どのようTextBlockに配置できScrollContentPresenterますか?

P / S:私は私のように設定VirtualizingStackPanelItemsPanelますListBox

0 投票する
1 に答える
76 参照

windows-phone-7 - リストボックスに最後のビューを記憶させないようにする方法

Listboxバインドする がありObservableCollectionます。私のアプリでは、このコレクションをクリアして、少ないメモリOnNavigatedFromに読み込む必要があります。OnNavigatedTo

ただし、StackPanelasを使用するとItemsPanelTemplateListbox最後のビュー (選択されたアイテム) を覚えているのに、覚えてVirtualizingStackPanelいないことがわかります。

では、使用時にこの動作を無効にするにはどうすればよいStackPanelですか?

0 投票する
4 に答える
7479 参照

c# - 仮想化されたWPFTreeViewでのスクロールは非常に不安定です

さまざまなサイズのアイテムで仮想化が有効になっている場合TreeView、複数の問題が発生します。

  • 垂直スクロールバーはサイズをランダムに変更し、ツリー全体を表示した後、要素のサイズを記憶しません。マウスでスクロールするのは難しいです。

  • 上下にスクロールするとArgumentNullException、フレームワークコードからスローされます。

再生成は簡単です。新しいWPFアプリケーションを作成し、このコードをMainWindow.xamlに配置します。

そしてこのコードをMainWindow.xaml.csに

アプリケーションが実行されたら、マウスカーソルをツリービューに移動し、マウスホイールを使用して下にスクロールし、次に上にスクロールしてから、もう一度下にスクロールし始めます。途中のどこかで、次の例外がスローされます。

また、例外だけが問題ではないこともわかります。上下にスクロールすると、スクロールバーのサイズが常に変化します。(サイズを予測できないという同じ問題は発生しませんが、ListBoxリスト全体を表示した後の全高は記憶されます。)

質問:スクロールバーを正しく動作させて例外を取り除くにはどうすればよいですか?(代替のTreeViewコントロールへのリンクや、このシナリオをサポートする仮想化パネルへのリンクは気にしません。)

0 投票する
0 に答える
100 参照

wpf - VirtualizingStackPanel の装飾方法

VirtualizingStackPanelを飾る簡単な方法はありますか?VirtualizingStackPanelを直接入れればScrollViewer仮想化が動きます。私の目標は、メソッドをオーバーライドして、 のDecorator.OnRender()背後にジオメトリを描画することPanelです。

0 投票する
0 に答える
669 参照

.net - WPF仮想化ItemsControlScrollChangedの動作が.Net4.5で変更されましたか?

アプリケーションの1つにUserControlが含まれており、スクロール時に同期が保たれるItemsControlの複数のレイヤーがあります。ItemsControlは仮想化されています。アプリケーションは4.5ではなく.Net4.0を対象としており、.NetFramework4.0がインストールされているシステムで制御は正常に機能します。ただし、現在.Net Framework 4.5もインストールされているPCがあり、100%下位互換性がないようです(またはシステムに別の問題があります)。

4.0では、同じ4.0アプリケーションを4.5がインストールされているシステムでは、スクロールバーをクリックしてマウスを押したまま移動すると、値が10進数に設定されるようです。

コントロールのサブセットであるこの小さなテストウィンドウでそれを再現しました。.Net 4.0のみを搭載したPCで実行すると、MesasgeBoxに整数値のみが表示されますが、.net 4.5がインストールされたPCでは、10進値も表示されます。

MainWindow.xaml.cs:

MainWindow.xaml:

これはバグですか、それともどこかに文書化されていますか?これは、.Net 4.5の下位互換性の問題ですか、それとも実際には4.5とはまったく関係がなく、代わりに一部のシステム構成の問題ですか?

問題は、実際に表示される範囲(コンテンツを本来のようにスクロールする)が範囲の値と等しくないため、アプリケーションで他のレイヤーが正確に同期されていないことです。回避策を作成しましたが、それでもこれは予期していませんでした。

0 投票する
1 に答える
294 参照

silverlight - WP7 - VirtualizingStackPanel の下部マージンが機能しない

ListBox ItemsPanel に VirtualizingStackPanel があります。Margin="0,0,0,50" を設定するとマージンは表示されませんが、左マージン (または上または右) Margin="50,0,0,0" を設定すると、マージンは正しく機能します。

StackPanel の VirtualizingStackPanel を変更すると、下の余白がうまく機能します。

これは私のコードです: