問題タブ [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.
c# - 仮想化 ItemsControl の要素へのスクロール
ItemsControl
アイテムを に表示し、仮想ScrollViewer
化を行う があります。私はそれScrollViewer
を含む(オフスクリーン、したがって仮想化された)アイテムにスクロールしようとしています。ただし、アイテムは仮想化されているため、実際には画面上に存在せず、位置もありません (IIUC)。
子要素を試してみBringIntoView
ましたが、スクロールして表示されません。TransformToAncestor
また、 、 、TransformBounds
およびを使用して手動で実行しようとしましScrollToVerticalOffset
たが、TransformToAncestor
決して返されません (仮想化のために、位置がないためだと思いますが、その証拠はありません) と、実行されない後のコード。
仮想化を使用してアイテムにスクロールすることは可能ItemsControl
ですか? もしそうなら、どのように?
c# - VirtualizingStackPanel を継承し、InternalChildren.Count がゼロを返す
要素を配置するための追加ロジックを実装します。
MeasureOverride と ArrangeOverride をオーバーライドします。StackPanel から継承すると、すべてが機能します。親としての VirtualizingStackPanel には当てはまりません。デバッグにより、要素のコンテナがまだ生成されていないかのように、InternalChildren.Count がゼロを返すことが明らかになりました。VSPの何かが恋しいです。そして、それは仮想化だと思います。誰でもこれで私を助けることができますか?
PS 継承の両方のバリアントが ItemsControl.ItemsPanel に対してテストされました
windows-phone-7 - WP7リストボックス表示方法より多くのアイテムをロード
私は、Windows Phone7ListBoxVirtualizingStackPanel
がデフォルトでメモリを最適化するために使用することを知っています。
ただし、ビューモデルにアイテムを追加すると、リストボックスにそれらの新しいアイテムが表示されません。それらを表示するには、上にスクロールしてから下にスクロールする必要があります。
私のビューモデルは実装しますIList
このガイドのように、周りの多くの記事にこの問題があります
これを修正する方法は?
windows-phone-7 - WP7リストボックスUI仮想化の仕組み
VirtualizingStackPanel
デフォルトでUI仮想化をサポートすると言われているを持っているListBoxを使用しています。
ただし、listStudent(タイプObservableCollection
が5人のStudentが含まれている)を設定ItemsSource
すると、Listbox
。次に、ユーザーが最後までスクロールするたびに、listStudentにさらに5人の学生を追加します(もちろんUIに通知されます)。しかし、消費されるメモリは増え続けていることがわかります。StackPanel
記憶の面でも違いはありません
UI仮想化はどのように機能しますか?listStudentに新しいアイテムを追加するときにメモリを低く保つ方法は?
windows-phone-7 - ListBoxのControlTemplateをスタイルするときに仮想化を維持する方法は?
スタイリングが正しくないとListBox
、仮想化が失われることを読みました。この質問に対する notacat の回答として、彼の解決策は OK です。
ItemsPresenter をGrid
、Border
、 ...などの別のコンテナに入れるたびに気づきます。
ListBox
仮想化はすぐに失われます。TextBlock
しかし、 beforeを配置したいのですがItemsPresenter
、ScrollViewerは 1 つの子要素しか受け入れません。
これに対処する方法は?
更新: この投稿を見ました。Derek LakinはそれTextBlock
をScrollViewer
テンプレートに配置することですが、どのようTextBlock
に配置できScrollContentPresenter
ますか?
P / S:私は私のように設定VirtualizingStackPanel
しItemsPanel
ますListBox
。
windows-phone-7 - リストボックスに最後のビューを記憶させないようにする方法
にListbox
バインドする がありObservableCollection
ます。私のアプリでは、このコレクションをクリアして、少ないメモリOnNavigatedFrom
に読み込む必要があります。OnNavigatedTo
ただし、StackPanel
asを使用するとItemsPanelTemplate
、Listbox
最後のビュー (選択されたアイテム) を覚えているのに、覚えてVirtualizingStackPanel
いないことがわかります。
では、使用時にこの動作を無効にするにはどうすればよいStackPanel
ですか?
c# - 仮想化されたWPFTreeViewでのスクロールは非常に不安定です
さまざまなサイズのアイテムで仮想化が有効になっている場合TreeView
、複数の問題が発生します。
垂直スクロールバーはサイズをランダムに変更し、ツリー全体を表示した後、要素のサイズを記憶しません。マウスでスクロールするのは難しいです。
上下にスクロールすると
ArgumentNullException
、フレームワークコードからスローされます。
再生成は簡単です。新しいWPFアプリケーションを作成し、このコードをMainWindow.xamlに配置します。
そしてこのコードをMainWindow.xaml.csに
アプリケーションが実行されたら、マウスカーソルをツリービューに移動し、マウスホイールを使用して下にスクロールし、次に上にスクロールしてから、もう一度下にスクロールし始めます。途中のどこかで、次の例外がスローされます。
また、例外だけが問題ではないこともわかります。上下にスクロールすると、スクロールバーのサイズが常に変化します。(サイズを予測できないという同じ問題は発生しませんが、ListBox
リスト全体を表示した後の全高は記憶されます。)
質問:スクロールバーを正しく動作させて例外を取り除くにはどうすればよいですか?(代替のTreeViewコントロールへのリンクや、このシナリオをサポートする仮想化パネルへのリンクは気にしません。)
wpf - VirtualizingStackPanel の装飾方法
VirtualizingStackPane
lを飾る簡単な方法はありますか?VirtualizingStackPanel
を直接入れればScrollViewer
仮想化が動きます。私の目標は、メソッドをオーバーライドして、 のDecorator.OnRender()
背後にジオメトリを描画することPanel
です。
.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とはまったく関係がなく、代わりに一部のシステム構成の問題ですか?
問題は、実際に表示される範囲(コンテンツを本来のようにスクロールする)が範囲の値と等しくないため、アプリケーションで他のレイヤーが正確に同期されていないことです。回避策を作成しましたが、それでもこれは予期していませんでした。
silverlight - WP7 - VirtualizingStackPanel の下部マージンが機能しない
ListBox ItemsPanel に VirtualizingStackPanel があります。Margin="0,0,0,50" を設定するとマージンは表示されませんが、左マージン (または上または右) Margin="50,0,0,0" を設定すると、マージンは正しく機能します。
StackPanel の VirtualizingStackPanel を変更すると、下の余白がうまく機能します。
これは私のコードです: