問題タブ [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 投票する
2 に答える
2000 参照

c# - ControlTemplate で ListBoxItem がクリックされたときにイベントをトリガーする必要がある

ListBoxItems のスタイルを ControlTemplate でオーバーライドしていますが、それによって、ListBoxItem クリック イベントのハンドラーが失われました。ControlTemplate にイベント ハンドラーを追加する必要があるという投稿を見つけましたが、これを行う方法がわかりません。

これを行うためのヘルプと指示は大歓迎です!

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

wpf - VirtualizingStackPanel が機能していません

私は次のリストボックスを持っています:

このリスト ボックスは最大 1000 個のアイテムをホストすることになっていますが、複雑なものです。VirtualizingStackPanel と連携させたいので、視覚化 XAML 構成を次のように設定しました。

私の問題は、それが機能しないと思うことです-最初に-700個までのアイテムをロードするのに非常に長い時間がかかり、2番目に、コントロールコンストラクターでブレークポイントにヒットすると-700回呼び出されることがわかります:

Console.WriteLine("Hi") でブレーク ポイントを設定すると、静的カウンターが 700 に達したことがわかります。

したがって、これは仮想モードですが、基本的に UIElements が作成されています。

仮想化モードを誤解していますか、それとも何か間違っていますか?

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

wpf - wpf - HierarchicalDataTemplate、VirtualizingStackPanel、ウィンドウのサイズ変更 (最大化)

VirtualizingStackPanel と組み合わせて HierarchicalDataTemplate を使用する wpf ツリービューに問題があります。以下に示すコードを使用して、アプリケーションを実行し、すべてのツリービュー項目を展開します。

http://img227.imageshack.us/img227/3536/wpftv03.png

次に、アイテムが仮想化されるようにビューポートを「小さく」します。一番下までスクロールして、最後の項目を選択します。

(申し訳ありませんが、複数のリンクを投稿するのに十分な担当者がいません...笑)

http://img291.imageshack.us/img291/9020/wpftv01.png

次に、ウィンドウを最大化します。

http:// img706.imageshack.us/img706/607/wpftv02.png

(ただしこれに限定されません) 最大化すると、すべてのツリービュー項目が実現されているわけではないようです。私は何が問題なのか困惑しています。どんな助けでも大歓迎です!:D

(これは、画面の半分を埋めるためにアプリを「ドッキング」したときにwin7でも発生します)

App.xaml

MainWindow.xaml

MainWindow.xaml.cs

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

wpf - WPF-VirtualizingStackPanelがListViewのアイテムを作成するときのイベントが必要

コンテナがListView用に作成され終わったことを知る方法はありますか?

私がこれまでにしたことの詳細な説明

CheckBoxコントロールを含む列の1つにDataTemplateがあるListViewコントロールがあります。ListViewがバインドされているオブジェクトを使用してCheckBoxに動的にアクセスする方法を理解しました。

問題は、スクロールしすぎたり、列を並べ替えたりするたびに、チェックボックスが「リセット」される(チェックが外れる)ことです。これは、VirtualizingStackPanelが表示されている(またはほとんど表示されている)ListViewItemのコンテナーのみを吐き出しているためであることがわかりました。また、CheckBoxはXAMLで定義されたDataTemplate内にあるため、表示されなくなるたびに破棄されます。またはリストが並べ替えられたとき。

これを回避するには、チェックボックスの個別のリストを作成し、実際のチェックボックスの「クリック」イベントを使用して、リスト内の対応するチェックボックスの状態を変更します。次に、表示されているすべてのチェックボックスの状態を変更するための小さなメソッドを作成しました。ユーザーがスクロールします...結果として、そもそも本来あるべきように見えます。

列を並べ替えるときを除いて。列を並べ替えた直後に(以前のように)チェックボックスを再実行させようとしましたが、機能しませんでした。私の推測では、並べ替えた後すぐにコンテナが作成されるわけではありません。

コンテナがListView用に作成され終わったことを知る方法はありますか?

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

wpf - VirtualizingStackPanel の欠点は何ですか?

VirtualizingStackPanel の主な欠点は何ですか? 何もない場合、ItemsControl のデフォルトのパネル動作/テンプレートとして作成されないのはなぜですか?

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

wpf - ScrollViewerのデフォルトのコントロールテンプレートをオーバーライドすると、VirtualizingStackPanelが機能しなくなります

レンダリングに費用がかかるアイテムがたくさんあるリストボックスがあります。ただし、VirtualizingStackPanelは、表示されているアイテムのみをレンダリングすることでそれを処理します。ScrollViewerのコントロールテンプレートをオーバーライドしたいのは、デフォルトのテンプレートの水平スクロールバーと垂直スクロールバーの間に灰色の長方形があるためです。灰色の長方形の問題がない、Microsoftが提供するもの(ScrollViewer ControlTemplateの例)をコピーしました。

ただし、このコントロールテンプレートは、VirtualizingStackPanelに無限の高さを与えることにより、仮想化を無効にします。つまり、VirtualizingStackPanelはすべてのアイテムが表示されていると見なすため、すべてのアイテムをレンダリングします。

以下のデモコードでは、リストボックスに10000個のアイテムを表示しています。ScrollViewerスタイルを使用した場合と使用しない場合を比較して、問題を確認します。これを使用すると、デモの実行が非常に遅くなり、サイズ変更に数秒かかります。スタイルがなければ、それは非常に高速です。私の主張を証明するために、VirtualizingStackPanelに関するいくつかの情報を出力しました。

ScrollViewerスタイルなし(XAMLでスタイルをコメントアウト):

ViewportHeight:8
ExtentHeight:10000
ActualHeight:245
IsVirtualizing:True
VirtualizationMode:Standard

ScrollViewerスタイルの場合:

ViewportHeight:0
ExtentHeight:0
ActualHeight:272766.666666707
IsVirtualizing:True
VirtualizationMode:Standard

仮想化を台無しにしないScrollViewerのコントロールテンプレートを作成する方法はありますか?

XAML:

背後にあるコード:

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

wpf - VirtualizingStackPanelのVirtualizationModeプロパティのリサイクル/標準の実際の違いは何ですか?

VirtualizingStackPanel.VirtualizationMode = Recycling / Standardで実際に何が起こっていますか?

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

wpf - UI仮想化リストボックス内のWPF検証

開発中の WPF アプリケーションで何らかのデータ検証を行う必要があります

私の知る限り、Binding に追加ValidatesOnDataErrors=Trueすると、Binding が解決されるたびに (値が変更されるたびに、フォーカスが失われたときに可能性があります)、Binding エンジンはバインディング ソースをチェックし、 を通じてIDataErrorInfo、インターフェイスにアクセスし、エラーがあるかどうかを調べます。

1 つだけ注意点があります。データを検証するには、レンダリングする必要があります。ObservableCollectionそのエンティティの が wi​​th にバインドされているListBox場合、VirtualizingStackPanel.IsVirtualizing=Trueレンダリングされたアイテムのみが検証されます。ほとんどのアイテムはビューポートの外にあるため、レンダリングされません。

すべてのアイテムを強制的に検証するにはどうすればよいですか? UI の仮想化を削除することはできません。

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

windows-phone-7 - リストボックスのスクロールビューアーにヘッダーを追加し、virtualizingStackPanel を維持する (wp7)

ListBoxes にヘッダーを追加したいのですが、テンプレートを使用してこれを行います。問題は、ListBox のテンプレートを拡張すると、リストボックスの virtualizingstackpanel が期待どおりに機能しないように見えることです。スクロールする前にすべてのコンテンツをロードします。

このようなスタックオーバーフローでいくつかの関連する質問を見つけました ( VirtualizingStackPanel は、 ScrollViewer のデフォルト コントロール テンプレートをオーバーライドすると動作しなくなります) が、そこに示されている解決策は WP7 に適用できません: スクロールビューアーの「CanContentScroll」という名前のプロパティが見つかりません。

私のコード

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

wpf - WPFでのVirtualizingStackPanelの適切な使用法

誰かがWPFでVirtualizingStackPanelを適切に使用する方法を教えてもらえますか?ItemsControlのItemsPanelTemplateにVirtualizingStackPanelを設定し、それをItemsHostとして設定しましたが、ItemsコントロールのCleanUpVirtualizedItem添付イベントのリスナーを登録しても何も起こりません。イベントが呼び出されるのがわかりません。また、データテンプレートのカスタムコントロールのUnloadedイベントが呼び出されることもありません。これは、実際の仮想化が行われていないことを示しています。どんな助けでも大歓迎です。