2017-03-20 11 views
3

XAMLに複数のレイヤーがあるTreeViewがあります。 this solutionを使用すると、それぞれのレイヤーごとにXAML構成の外観が得られ、それがUIの仮想化であることを確認できます。異なる方向のWPF仮想化ツリービューは仮想化されませんか?

私が親とは異なるOrientationを(それはどうかthis solutionのようなコードによって、またはSnoopとは関係ありません)を持つように特定の層のVirtualizingStackPanelを切り替えたときしかし、その後、UIの仮想化をオフにしてTreeViewはすべてTreeViewItemを実現私がその層を広げるとすぐに

私はあなたがそのMeasureOverride機能を掘り下げるようVirtualizingStackPanelのリファレンス・ソースの中に、あなたはthis comment on line 2116を見つけることに気づいこの動作を調査中:

計算し、このパネルは、(原文のまま)のどちらかの親という向きに異なる場合または子孫

Microsoftは意図的にUI仮想化を無効にしているようです。だから、私は2つの質問があります:

  • レイヤー間で配向の整合性が重要なのはなぜですか?
  • TreeViewで方向が異なるUI仮想化を使用するにはどうすればよいですか?

答えて

2

UI仮想化は、ビューポートとビューに含める内容を正しく測定する能力に依存しています。一般的に言えば、リストのような構造のために1次元でスクロールしている場合(レンダリングが行われる限り、インデントされたリストのようにツリービューを考えればうまくいく)あなたがレンダリングしている子供に応じて、突然2次元で計算する必要がある場合は、うまくいきません。それらの水平方向の子供の1つが他のものよりも背が高いが、現在は画面上に表示されていない場合、アルゴリズムが果たさなければならないものを考えてください - レイアウトを計算せずに、仮想化の目的を打ち負かしているのですか?

+0

ありがとうございます。折りたたみ可能な内側のレイヤーでUI仮想化を実現する方法を知っていれば、私は興味がありますか? –

+0

私はそれがカスタムロジックでなければならないと思うし、それはまったく些細なことではない... –

+0

私はUI仮想化コントロールをゼロから作るために必要なことを読んできた...はい、間違いなく些細ではない –

関連する問題