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

wpf - VirtualizingStackPanel は、仮想化されたコントロールをアンロード (破棄) するタイミングをどのように決定しますか?

ControlTemplate で VirtualizingStackPanel を使用して ItemsControl を操作しています。仮想化はある程度機能しています。項目の DataTemplate のコントロールの Loaded および Unloaded イベント ハンドラーにデバッグ ステートメントを配置しましたが、コントロールが表示されなくなった直後にアンロードされません。この動作を強制する方法はありますか?

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

silverlight - ItemsControlとVirtualizingStackPanelを使用した「BindingExpressionパスエラー」

WindowsPhone7でSilverlightを使用しています。

VirtualizingStackPanelを使用しているときに、「BindingExpressionパスエラー」デバッグメッセージが大量に表示されるのは正常ですか?ビジュアルアイテムはリサイクルされるため、データアイテムコレクションから一時的にバインドされていないために発生していると思います...

ItemsPanelのItemsPanelTemplateがVirtualizingStackPanelであるItemsControlがあります。これは、ViewModelの「Notes」ObservableCollectionにバインドされます。

これは、DataContextがMainViewModelViewModelに設定されているUserControl内にあります。

ListDataTemplateには、NotesObservableCollection内のアイテムのプロパティにデータバインドされたテキストを含むボタンが含まれています。

プログラムを実行すると、すべて正常に機能します。Notesコレクション内の少数のアイテムのみが一度にバインドされます。ただし、上下にスクロールすると、多くのデバッグエラーが発生します。

メインビューモデル(NotesプロパティはItemsSource)で "Title"プロパティを探しています-これは正常だと思います-ビジュアルアイテムがNotesコレクション内のアイテムからバインドされていないため、一時的な状況です。コレクション内の別のアイテムに割り当てることでリサイクルされます。

他の誰かがこれを見たことがありますか?私はそれが正常であるということは正しいですか?

MainViewModelにダミーのTitleプロパティを作成し、デバッグブレークポイントを設定すると、このスタックトレースが表示されます。「UnlinkContainerFromItem」に注意してください。

ありがとう、ダミアン

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

wpf - Wpf Xbap TreeView VirtualizingStackPanel バグ?

VirtualizingStackPanel をオンにした TreeView があります。TreeView には「レベル 1」の TreeViewItem があり、この TreeViewItem を 10k 項目リストにバインドします。各子は別の TreeViewItem でもあります。

仮想化はうまく機能し、パフォーマンスも優れていますが、大きな問題があります。私がページの上部にいて、Ctrl-End を押して下部に移動すると、ブラウザが空白になるとしましょう。マウスを少しスクロールするか、ブラウザのサイズを変更すると、再び表示されます。

もう1つの大きな問題は、ツリーの中央または下部まで非常に速くスクロールするときです。アイテム番号5000で停止するとしましょう。その後、子ツリービューアイテムを展開できません.ブラウザは、スクロールするかサイズを少し変更するまで何も表示しません.

どんな助けでも大歓迎です。以下は、サンプルの xaml とコードです。

.Net 4 で Visual Studio 2010 を使用しています。さらに、_level2Template の下で TreeViewItem の高さと幅を設定すると、問題が解決したことに気付きました。ただし、私の場合、高さを設定することはオプションではありません。実際のアプリケーションでは高さが異なるためです。

更新:子ツリービューアイテムの高さが異なる可能性があるため、この問題が発生したことは明らかです。おそらくそれが、TreeView では VirtualizingStackPanel がデフォルトでオンになっていないのに、DataGrid と ListBox ではデフォルトでオンになっている理由です。言うまでもなく、データグリッドまたはリストボックス項目の高さは通常変更されません。

更新: telerik RadTreeView の無料試用版をダウンロードし、仮想化をテストしました。この問題は、telek radtreeview ではまったく発生しません。テレリックをもう少しテストしてから、おそらくそれを使用してください。

0 投票する
4 に答える
1736 参照

silverlight - WP7:ListBoxはいつVirtualizingStackPanelを使用しますか?

ListBoxのデフォルトのItemsPanelはVirtualizingStackPanelだと誰もが言っています。ListBoxから派生したクラス(MyListBoxと呼びます)を作成しましたが、デフォルトではStackPanelになっています。

つまり、たとえば次のように、仮想化を強制する必要があります。

ここに私のクラスを転載することはできますが、それは重要ではありません。一般的な答えを知りたいのですが。

このクラスは、事前定義されたListBoxスタイルを変更しませんが、独自のListBoxItemから派生したクラスを使用します。

私の同僚が過去にそれぞれのリストボックスコードを見たと言ったので、仮想化を使用するためのいくつかの条件があると確信しています。残念ながら、現時点では、MSdllのデバッグバージョンにアクセスできません。

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

c# - ツリービューのVirtualizingStackPanelは仮想化ではありません

ここで問題が発生しました。TreeViewに約100.000要素のアイテムを表示したいと思います。デフォルトのWPFTreeViewを使用すると、すべてが機能しているように見えますが、カスタムTreeView(現時点ではItemsControlのみ)を使用すると、仮想化が機能しなくなったようです。Webで調査しているときに、いくつかの解決策を試しましたが、どれも機能していないようです...これが私のxamlです。

アイテムはDataBindingを使用してObservableCollectionにあるため、問題になることはありません...しかし、それは何ですか?

挨拶、

ユルゲン

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

c# - スタック パネルを仮想化すると Null の選択項目が返される

スタック パネルを使用してリストボックス アイテムを表示していましたが、仮想化パネルに変更すると、選択したアイテムが null になることがありました。選択した項目コマンドを呼び出すために使用していた DataTemplate の一部を次に示します。

リストボックスは次のとおりです。

仮想化をオフにすると、この問題は発生しません。nullアイテムを返さないようにするにはどうすればよいですか?

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

wpf - VirtualizingStackPanelは、ItemTemplate内のTextBoxのテキストをクリアしません

次のようなアイテムパネルとして、VirtualizingStackPanelを備えたItemsControlがあります。

スタイルは次のとおりです。

ItemsSourceとして100.000要素のコレクションを設定すると、非常に優れたパフォーマンスが得られます。1つを除いてすべてが大丈夫です。テキストボックスの1つにテキストを入力してからスクロールを開始すると、そのテキストがリスト全体に表示されていることがわかります。

VirtualizingStackPanelの機能を理解しています。スクロールすると表示される要素を継続的に読み込んでいます。仮想化手法のいくつかの側面は理解していますが、この奇妙な動作を理解する方法がわかりません。WPF / Silverlight仮想化に関する適切なドキュメントが見つからなかったので、何が起こっているのか説明してください

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

windows-phone-7 - WP7のWrapPanelの仮想化

Facebookの友達と一緒にラップパネルを作成する必要があります。つまり、アイテム数が400を超えており、すべてのアイテムが読み込まれるまでに5〜10秒かかります。

このコードは良いでしょうが、すべての要素を1行に配置します...:

VirtualizingStackPanelにアイテムラッピングを追加する方法、またはWrapPanelにVirtualizingを追加する方法に関するアイデア:

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

silverlight - スタックパネルと高さの仮想化

scrollviewer内にvirtualizingstackpanelがある場合、scrollviewerはスクロールバーの高さをどのように知るのですか?

たとえば、10,000個のアイテムがある場合、リストを5%しかスクロールしていないことをどのようにして知ることができますか?

アイテムのサイズがわからない場合はどうなりますか?

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

.net - 複数選択 ListBox と MVVM の同期

私はいくつかのデータの 2 つのビューを持っています: リスト ビュー (ListBox今は、しかし、私は に切り替えるつもりListViewでした) と地図上の派手なグラフィカル表現です。どちらのビューでも、ユーザーがオブジェクトをクリックすると、両方のビューでオブジェクトが選択されます。複数選択も可能であるため、各ViewModelインスタンスには独自のIsSelectedプロパティがあります。

現在、私は にバインドListBoxItem.IsSelectedしていますが、これは が仮想化ViewModel.IsSelectedされていない場合にのみ正しく機能します(こちらを参照)。残念ながら、仮想化を無効にするとパフォーマンスが低下し、アプリが非常に遅くなりました。ListBox

そのため、仮想化を再度有効にする必要があります。ViewModel.IsSelectedオフスクリーン アイテムのプロパティを維持するために、選択状態を から に伝達するために (おそらく) 使用できるイベントがあることにListBox気付きました。ListViewSelectionChangedListBox/ListViewViewModel

私の質問は、選択状態を逆方向に伝播するにはどうすればよいですか? のSelectedItemsプロパティListBox/ListViewは読み取り専用です。ユーザーがグラフィカル表現のアイテムをクリックしたとしますが、それはリストの画面外にあるとします。設定ViewModel.IsSelectedしただけListBox/ListViewでは、新しい選択が認識されず、その結果、ユーザーがリスト内の別の項目をクリックしても、その項目の選択を解除できません。ListBox.ScrollIntoViewから呼び出すことはできますViewModelが、いくつか問題があります。

  • 私の UI では、2 つのアイテムがグラフィック上で同じ場所にある場合、実際には 1 回のクリックで 2 つのアイテムを選択できますが、ListBox/ListView.
  • ViewModel の分離が壊れます (私の ViewModel は WPF をまったく認識していないので、そのままにしておきたいと思います)。

親愛なる WPF の専門家の皆さん、何か考えはありますか?

編集: Infragistics コントロールに切り替えて、醜くてかなり遅いソリューションを使用することになりました。要するに、もう答えは必要ありません。