問題タブ [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.
c# - Wpf: propertychange での ListView の更新は、実際のデータベース クエリよりもはるかに遅くなります
一致する製品のリストがキーストロークごとに更新されるアプリケーションの検索機能を構築していますが、遅すぎて奇妙なことに、GUI での実際の更新時間は取得にかかる時間よりもはるかに長くなります。データベースから一致する製品。
リストのスクロールが遅くならないように、ここで説明されているように仮想化を使用しています: http://www.codeproject.com/Articles/34405/WPF-Data-Virtualization、スクロールは非常にスムーズに機能するようになりましたが、リストの更新には数秒かかります約 30000 個の製品の場合、最初の文字を書くときと同じように、4 番目の文字を書くとき (100 個未満の製品を生成するとき) は遅くなります。
このコードは、codeproject の XAML に似ています。
ビューモデル:
私の製品名プロバイダー:
私が測定できた唯一のコードはビューモデルのコードであり、それが十分に高速であることはわかっています.GUIの更新にかかる残りの時間を測定および評価する方法はありますか?
c# - VirtualizingPanel.ScrollUnit="Pixel" を使用して巨大な ListBox をスクロールする
WPF 4.5 の ListBox にかなり長いリストを表示する際に速度の問題があります。私の ListBox には約 5000 個の項目が含まれており、項目の高さが異なる場合があります。各アイテムには、アイテムが表示されるとすぐに実行されるクエリによって取得される情報が表示されます。すべてのコンテンツに対して一度にこれを行うには時間がかかりすぎるため、この遅延クエリ実行が必要です。アイテムのプロパティが最初にアクセスされたときに作成されるNotifyTaskCompletionオブジェクトに ItemsControl をバインドすることで、遅延クエリを実行しました。
例えば:
したがって、アイテムが表示されるたびに、クエリを実行するスレッドが開始され、クエリが完了するとコンテンツが表示されます。クエリによって取得される情報は非常に多くなる可能性があります。つまり、ListBox 内の項目は ListBox 自体よりも大きくなる可能性があります。これが、ユーザーが項目全体を表示できるように、ListBox で VirtualizingPanel.ScrollUnit="Pixel" を設定する必要がある理由です。
ただし、これによりスクロールが大幅に遅くなります。スクロールバーの親指をリストの中央にドラッグすると、数秒間フリーズした後、クエリされた情報なしでいくつかの項目が表示されます。次に、いくつかの項目が照会された情報を表示します。その後、ListBox は別の位置にジャンプしたように見え、これが再び別のフリーズなどにつながります。ListBox は現在のスクロール位置より上にあるすべてのアイテムをレンダリングしているように見えますが、すべてのクエリとクエリされたデータの複雑なレンダリングのために非常に時間がかかります。
VirtualizingPanel.ScrollUnit="Unit" を設定すると、速度の問題は発生しません。ListBox は、スクロール先の項目のみを表示するため、照会された情報のみが表示されます。残念ながら、「ピクセル」設定を使用する必要があるのは、アイテムが非常に大きい場合があるため、ユーザーがすべてを表示できるようにするためにピクセル スクロールが必要になる場合があるためです。
一度に数百のスレッドを開始することを避けるためにクエリ用のキューを用意したほうがよいという事実は認識していますが、ListBox がアイテムをレンダリングするという根本的な問題については何も変わらないと思います。表示されません。
この問題に取り組む方法がよくわかりません。誰でも私を助けることができますか?
java - デスクトップで使用するために Java swing を使用して apk ファイルをシミュレートする
Javaスイングアプリケーション内で使用する機能が必要なapkファイルのリストがあります。タブを押すと、apkファイル1、2の別のタブをシミュレートする必要があります。
より良い方法では、Java スイングで apk を仮想化して、快適にデスクトップ アプリケーションとして使用する必要があります。
前もって感謝します!!。
c# - WPF TreeView:仮想化がBringIntoView()を壊すのはなぜですか?
WPFVirtualizingStackPanel.IsVirtualizing="True"
で aを設定する場合:TreeView
への呼び出しを含む次のコード ビハインドはTreeViewItem.BringIntoView()
機能しません。
ただし、行を削除するVirtualizingStackPanel.IsVirtualizing="True"
と、lastTvi2
オブジェクト (ツリーの最後の項目) がビューに表示されます。なぜこれがTreeViewItem.BringIntoView()
メソッドを壊すのですか? これは正常な動作ですか、それとも .NET のバグですか?
windows-phone-8 - LongListSelector で並べ替えられるアイテム
私の WP8 アプリでは、LongListSelector を使用してデータ項目を表示しています。グループ化が機能し、ジャンプ リストが機能します。
ここには通常のマスター/詳細シナリオがあります。リスト内のアイテムをクリックすると、新しいページが詳細情報とともに表示されます。
問題は、LongListSelector を使用してページに戻ることです。リストは基本的にめちゃくちゃです -グループ間であっても、アイテムはランダムに並べ替えられます。アイテムのクリックは正しく機能します -ShowItemInfo
ユーザーがクリックしたアイテムのビュー モデルを受け取ります。
以前は ListBox を使用していましたが、これもこの問題に悩まされていました。しかし、デフォルトの StackPanel を項目パネルとして使用することで、仮想化を無効にすることができました。LongListSelector で仮想化を無効にする方法がわかりません (そうしたくありませんが、バグがひどいです)。
ビューモデルはシンプルです。私はCaliburn.Micro、その規則、およびBindableCollection
グループのリストを使用しています。メソッドを使用してリストに一度だけ入力しますAddRange
。
ページに戻ったとき、私は何もしていません。MVVM と Caliburn.Micro を使用しているので、何もできません。アイテムはOnInitialize
コールバックでリストにロードされます。これは、ビュー モデルの有効期間中に 1 回だけ呼び出されます。
ビューの XAML は次のとおりです。
c# - WPF: スクロール バー付きの ListBoxItem
ListBox
(デフォルトで含まScrollViewer
れています)とListBoxItem
一緒に持つことは可能ScrollViewer
ですか?次のビューを実現したい:
また、この ListBox は仮想化もサポートする必要があります。(有効にする方法は知っていますが、2 つのスクロール ビューアーを使用すると機能するのでしょうか?)
更新:ListBox.ItemTemplate
をバインドしているため、
を使用する必要がありますItemsSource
。
ヒントをありがとう。