項目ソースとして ObservableCollection としての ComboBox があります。したがって、ComboBox はラベルで構成されます。
ユーザーが生成できる UserControls がいくつかあり、これらの UserControls のそれぞれに複数の ComboBox を設定できます。UserControl が作成されると、UserControl の名前のラベルが ObservableCollection に追加されるため、アイテム ソースが ObservableCollection であるすべての ComboBox にも最新のラベルが追加されます。
すべてが正常に動作し、期待どおり、新しい UserControls が生成されると、ComboBoxes が読み込まれます。しかし、非常に奇妙な問題が発生しています。
ユーザーが 1 つの UserControl の ComboBox ドロップダウン メニューを開くと、すべてのラベルが適切に表示されます。
次に、ユーザーが別の UserControl の ComboBox ドロップダウン メニューを開くと、すべての項目が同じ方法で表示されます。奇妙な問題は、ユーザーが前の UserControl の ComboBox に戻ると、項目が消えることです。デバッグしたところ、ラベルがまだアイテムとして含まれていることがわかったので、ラベルはまだそこにありますが、高さが 0 に設定されているかのようです (デバッグ時に、高さが 0 ではなく 26 であることがわかりました事実)。
同量のラベルが含まれており、上のスクリーンショットに見られるように、それらは選択可能ですが、表示されていません (何かを選択していることを示す小さな青いバーが表示されているだけです)。ラベルの高さをどこにも変更していません。
ユーザーは、WPF がそれが表すコレクションによって CollectionView をキャッシュするため、すべての ComboBoxes が CollectionView の同じインスタンスを共有するとコメントしています。したがって、Label は視覚的な親を 1 つしか持つことができないため、ユーザーが 2 番目の ComboBox を展開すると、最初の ComboBox からラベルが切り離されます。