問題タブ [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# - ISupportIncrementalLoading は 1 回だけ起動します
仮想化リスト用の Win8 Metro リファレンス アプリを作成しようとしています。いくつかの (非常にまばらな) 読み取りを行っているときに、これをサポートする推奨される方法はISupportIncrementalLoading
インターフェイスを使用することであることがわかりました。
プロパティが True を返すようにハードコードされてLoadMoreItemsAsync
いるにもかかわらず、メソッドが 1 回呼び出されたが、再度呼び出されないリファレンス アプリに問題があります。HasmoreItems
以下のコードがすべきことは、40 個のアイテムをロードしてから、一度に「x」個のアイテムをロードすることです。何が起こるかというと、最初の 40 個のアイテムをロードし、さらに 42 個のアイテムをロードするように求められ、その後二度とロードするように求められることはありません。
私のコードの関連部分は次のとおりです。
XAML
ViewModel とサポート クラス:
}
wpf - RichTextBox の WPF ContextMenu を使用して大規模なデータ セットを読み込む
ContextMenu の項目数が 3000 のような数になった状況に陥っています。このシナリオでは、ContextMenu 自体の読み込みに時間がかかります。UI 仮想化を実行しようとしていますが、うまくいきません。
サンプルコードは次のとおりです。
この問題を解決する方法を教えてください。
ありがとう!
ハーシュ・グプタ
c# - WPF ラインの仮想化
現在、WPF で波形コントロールを作成しています。ズーム機能を構築する予定です。つまり、ユーザーはオーディオ ファイル全体のすべてのサンプルを表示できる必要があります。誰もが知っているように、audiofile には非常に多くのサンプルを含めることができます。そのため、非常に多くの線を描画する必要があり、それはオーバーヘッドになります。
そこで、依頼された時だけ線を引くことを考えました。問題は、それを行うための最善かつ最もクリーンな方法が何であるかがわからないことです。このような機能の構築をどのように開始できるか、何か考えはありますか? 揚げた頭脳のようなコードは望んでいません。誰かがその問題を解決するための良いアイデアを持っていれば、私はとても感謝しています.
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では、仮想化が有効になっているにもかかわらず、仮想化が実際に機能していないというのは事実ですか?
wpf - ItemContainerGeneratorにアイテムのコンテナーを生成させる方法、またはUI仮想化が有効になっているときにTreeViewを展開されたノードにスクロールする方法
ScrollIntoView()
TreeViewにはメソッドがありません唯一の方法は、対応するデータアイテムコンテナ
を呼び出すことです。
ただし、ノードが非表示で、コンテナがまだ生成されていない場合は、を返します。TreeVewItem.BringIntoView()
ItemsControl.ItemContainerGenerator.ContainerFromItem()
null
したがって、ItemContainerGeneratorにアイテムのコンテナを作成させる方法があるはずです。
合理的な質問は次のとおりです。ノードを拡張して非表示のままにするにはどうすればよいですか。
簡単!IsExpanded
VMのプロパティにバインドされています。また、UI仮想化は期待どおり
に機能します。アイテムへの手動スクロールが実行されたときにTreeViewItem.Expandedのイベントハンドラーが呼び出されました。
wpf - TreeViewのびくびくスクロール
これらのプロパティを持つ仮想化されたTreeViewがあります。
TreeViewItemはほぼ同じ高さです。
問題は、スクロールバーのハンドルを下にスクロールするとサイズが変わり、スクロールが「ジャンプ」するため、ユーザーエクスペリエンスが大幅に低下することです。
どうすればよりスムーズなUXを手に入れることができるでしょうか?
wpf - 仮想化キャンバスの連続背景グリッド?
私の WPF アプリケーションには、Canvas の仮想化メカニズムを提供する Panel としてZoomableCanvasを持つ ItemsControl があります。これは完全に機能しています。このキャンバスには、グラフのような背景が必要です。以下の xaml を使用すると、グリッドが生成されますが、 (読み込み時に) ビューポートの範囲までしか生成されません。そのため、スクロールすると、背景グリッドが垂直方向および水平方向に切り取られていることがわかります。performant-virtualized-wpf-canvas では、これは子ビジュアルをキャンバスに背景として追加することで処理されました。
問題を詳しく説明するには: 次の画像を参照してください。
ロード時 --- バックグラウンド グリッドが表示され、子の左が 0,0 からかなり離れています。
右にスクロールして戻る -- 背景グリッドが切り取られ、子がキャンバスの左端から開始するように見えます
ZoomableCanvas の幅全体に広がる Grid 背景をどのように持つことができますか? また、On Scroll の問題をどのように修正しますか?
ヘルプ/ヒントを心から感謝します。
wpf - Windows 8 アプリでコンテナーのリサイクルを無効にするにはどうすればよいですか?
時間があれば、新しい空のアプリ (XAML)テンプレートを作成し、次の XAML コードを記述します。
コンテナーのリサイクルが機能しないように見えるため、 WPF アプリケーションを作成しても無駄だと思います。また、GridViewをListViewに置き換える必要があります。
ビュー モデルとアイテムクラスを作成します。
アプリを起動すると、一連の項目をスクロールできます。特定のアイテムを縦にスクロールして「This is item #x」というメッセージが表示されると、右にスクロールした後に「This is item #x」という別のメッセージが再び表示されることに気付きました (ただし、スクロールしませんでした)。アイテムを垂直にします。)
これは、アイテムが仮想化されているためです。そして、アイテムが実現すると、プールからコンテナーが使用されます。運が悪ければ、コンテナーは既にスクロールされています...
プールには 10 個のアイテムがあります。
コード ビハインド ファイル:
次に、ItemsPresenter オブジェクトを再キャストします。
それが機能したとしても、パフォーマンスは向上しません。
問題のエレガントな解決策を知っている人はいますか? public フィールドが多すぎるためにクビになりたくない ;) 添付プロパティを書くことも考えました...