0

私はvirutalzationを真にしたときにコンボボックススタイルのように奇妙な問題を抱えています.コンボボックスアイテムのすべてのチェックボックスをチェックするチェックボックスがあります.

ItemsPanel プロパティで、以下のように VirtualizingStackPanel を使用してカスタム スタイルを作成しました。

<Setter Property="ItemsPanel">
        <Setter.Value>
          <ItemsPanelTemplate>
            <VirtualizingStackPanel IsItemsHost="True"
                                    IsVirtualizing="True"
                                    VirtualizationMode="Recycling" />
          </ItemsPanelTemplate>
        </Setter.Value>
      </Setter>

しかし、ビューをスクロールする前と後で、それは異なります。

たとえば、ここでは、アイテムパネルを下にスクロールした後、コンボボックスの最初のアイテムを取得しようとしています

ComboBoxItem cmbItem = ComboBox1.ItemContainerGenerator.ContainerFromItem(ComboBox1.Items[0]) as ComboBoxItem;

しかし、ここではNULLしか得られません。

では、仮想化を使用してこれを達成できる方法はありますか? (すでに仮想化されていることは知っています!)。または、仮想化をやめて別の解決策を考えるべきです。仮想化プロパティがないと、コンボボックスの読み込みが非常に遅くなることがわかりました。

何かご意見は?

前もって感謝します!:)

4

1 に答える 1

0

NULL は、直接仮想化の結果です。仮想化/リサイクルされるのは ComboBoxItem インスタンスです。コレクションの表示可能なアイテムのみに ComboBoxItem が割り当てられるため、表示されていないアイテムで ComboBoxItem を要求すると、NULL が返されます。

于 2016-10-07T20:51:47.593 に答える