問題タブ [ui-virtualization]

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 投票する
2 に答える
2999 参照

c# - ISupportIncrementalLoading は 1 回だけ起動します

仮想化リスト用の Win8 Metro リファレンス アプリを作成しようとしています。いくつかの (非常にまばらな) 読み取りを行っているときに、これをサポートする推奨される方法はISupportIncrementalLoadingインターフェイスを使用することであることがわかりました。

プロパティが True を返すようにハードコードされてLoadMoreItemsAsyncいるにもかかわらず、メソッドが 1 回呼び出されたが、再度呼び出されないリファレンス アプリに問題があります。HasmoreItems

以下のコードがすべきことは、40 個のアイテムをロードしてから、一度に「x」個のアイテムをロードすることです。何が起こるかというと、最初の 40 個のアイテムをロードし、さらに 42 個のアイテムをロードするように求められ、その後二度とロードするように求められることはありません。

私のコードの関連部分は次のとおりです。

XAML

ViewModel とサポート クラス:

}

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

wpf - RichTextBox の WPF ContextMenu を使用して大規模なデータ セットを読み込む

ContextMenu の項目数が 3000 のような数になった状況に陥っています。このシナリオでは、ContextMenu 自体の読み込みに時間がかかります。UI 仮想化を実行しようとしていますが、うまくいきません。

サンプルコードは次のとおりです。

この問題を解決する方法を教えてください。

ありがとう!

ハーシュ・グプタ

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

c# - WPF ラインの仮想化

現在、WPF で波形コントロールを作成しています。ズーム機能を構築する予定です。つまり、ユーザーはオーディオ ファイル全体のすべてのサンプルを表示できる必要があります。誰もが知っているように、audiofile には非常に多くのサンプルを含めることができます。そのため、非常に多くの線を描画する必要があり、それはオーバーヘッドになります。

そこで、依頼された時だけ線を引くことを考えました。問題は、それを行うための最善かつ最もクリーンな方法が何であるかがわからないことです。このような機能の構築をどのように開始できるか、何か考えはありますか? 揚げた頭脳のようなコードは望んでいません。誰かがその問題を解決するための良いアイデアを持っていれば、私はとても感謝しています.

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

wpf - VirtualizingStackPanelでのWPF4.0ピクセルベースのスクロール

次のXAMLスニペットがあります。

ご覧のとおり、ScrollViewer.CanContentScroll = "True"とutils:VirtualizingStackPanelAttachedProperties.IsPixelBasedScrollingEnabled = "True"(ここで提案されているように、IsPixelBased内部プロパティをtrueに設定する添付プロパティです)があります。

これは、スクロールがきめ細かいピクセルベースのWindowsXPで期待どおりに機能します。
ただし、これは、スクロールがまだアイテムベースであるWindows 7では期待どおりに機能しません。これは、上記の添付プロパティをTrueに設定していない場合のWindowsXPと同じです。
Windows 7でピクセルベースのスクロールを機能させる唯一の方法は、CanContentScrollをFalseに設定することでしたが、これは仮想化をオフにします。

なぜこれが起こるのか考えていますか?どういうわけか、Windows XPでは、仮想化が有効になっているにもかかわらず、仮想化が実際に機能していないというのは事実ですか?

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

wpf - ItemContainerGeneratorにアイテムのコンテナーを生成させる方法、またはUI仮想化が有効になっているときにTreeViewを展開されたノードにスクロールする方法

ScrollIntoView()TreeViewにはメソッドがありません唯一の方法は、対応するデータアイテムコンテナ
を呼び出すことです。 ただし、ノードが非表示で、コンテナがまだ生成されていない場合は、を返します。TreeVewItem.BringIntoView()
ItemsControl.ItemContainerGenerator.ContainerFromItem()null

したがって、ItemContainerGeneratorにアイテムのコンテナを作成させる方法があるはずです。

合理的な質問は次のとおりです。ノードを拡張して非表示のままにするにはどうすればよいですか。

簡単!IsExpandedVMのプロパティにバインドされています。また、UI仮想化は期待どおり
に機能します。アイテムへの手動スクロールが実行されたときにTreeViewItem.Expandedのイベントハンドラーが呼び出されました。

0 投票する
2 に答える
1514 参照

wpf - TreeViewのびくびくスクロール

これらのプロパティを持つ仮想化されたTreeViewがあります。

TreeViewItemはほぼ同じ高さです。

問題は、スクロールバーのハンドルを下にスクロールするとサイズが変わり、スクロールが「ジャンプ」するため、ユーザーエクスペリエンスが大幅に低下することです。

どうすればよりスムーズなUXを手に入れることができるでしょうか?

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

wpf - 仮想化キャンバスの連続背景グリッド?

私の WPF アプリケーションには、Canvas の仮想化メカニズムを提供する Panel としてZoomableCanvasを持つ ItemsControl があります。これは完全に機能しています。このキャンバスには、グラフのような背景が必要です。以下の xaml を使用すると、グリッドが生成されますが、 (読み込み時に) ビューポートの範囲までしか生成されません。そのため、スクロールすると、背景グリッドが垂直方向および水平方向に切り取られていることがわかります。performant-virtualized-wpf-canvas では、これは子ビジュアルをキャンバスに背景として追加することで処理されました。

問題を詳しく説明するには: 次の画像を参照してください。

ここに画像の説明を入力

ロード時 --- バックグラウンド グリッドが表示され、子の左が 0,0 からかなり離れています。

右にスクロールして戻る -- 背景グリッドが切り取られ、子がキャンバスの左端から開始するように見えます

ZoomableCanvas の幅全体に広がる Grid 背景をどのように持つことができますか? また、On Scroll の問題をどのように修正しますか?

ヘルプ/ヒントを心から感謝します。

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

wpf - Windows 8 アプリでコンテナーのリサイクルを無効にするにはどうすればよいですか?

時間があれば、新しい空のアプリ (XAML)テンプレートを作成し、次の XAML コードを記述します。

コンテナーのリサイクルが機能しないように見えるため、 WPF アプリケーションを作成しても無駄だと思います。また、GridViewをListViewに置き換える必要があります。

ビュー モデルとアイテムクラスを作成します。

アプリを起動すると、一連の項目をスクロールできます。特定のアイテムを縦にスクロールして「This is item #x」というメッセージが表示されると、右にスクロールした後に「This is item #x」という別のメッセージが再び表示されることに気付きました (ただし、スクロールしませんでした)。アイテムを垂直にします。)

これは、アイテムが仮想化されているためです。そして、アイテムが実現すると、プールからコンテナーが使用されます。運が悪ければ、コンテナーは既にスクロールされています...

プールには 10 個のアイテムがあります。

コード ビハインド ファイルのプログラム出力

コード ビハインド ファイル:

次に、ItemsPresenter オブジェクトを再キャストします。

それが機能したとしても、パフォーマンスは向上しません。

問題のエレガントな解決策を知っている人はいますか? public フィールドが多すぎるためにクビになりたくない ;) 添付プロパティを書くことも考えました...