¿Por qué CompositeCollection no es Freezable?

Estoy escribiendo una aplicación usando el patrón MVVM. Estoy proporcionando datos a mi vista al configurar la propiedad DataContext de mi vista a una instancia de mi ViewModel. Generalmente solo uso Binding desde allí y sigo mi camino.

Recientemente, intenté implementar un ComboBox con un elemento "extra" más allá de la colección que mi ViewModel proporciona que dice "Seleccionar elemento".

<ComboBox>    
    <ComboBox.ItemsSource>    
        <CompositeCollection>
           <ComboBoxItem IsEnabled="False">Select Item</ComboBoxItem>
           <CollectionContainer Collection="{Binding MyItemsCollection}" />    
        </CompositeCollection>
    </ComboBox.ItemsSource>
</ComboBox>

El problema es que CompositeCollection no es Freezable:Descripción de objetos congelables. Esto hace que solo aparezca el ComboBoxItem estático y ninguno de los resultados de mi expresión de enlace.

Mi primera reacción al problema fue simplemente implementar mi propia versión de CompositeCollection queestaba Congelable Esto, sin embargo, plantea la siguiente pregunta:

¿Por qué no es CompositeCollection un Freezable en primer lugar?

Mi preocupación es que, en general, estas decisiones se toman por una razón y no creo que sepa lo suficiente sobre Freezable para decir por qué no se heredaron de ella. Sé que puedo implementar esta colección, pero me preocupa que habrá una diferencia apreciable en el rendimiento si lo hago.

Cualquier ayuda sería apreciada. ¡Gracias!

También: tenga en cuenta que me doy cuenta de que puedo insertar un valor nulo o algún otro valor especial y proporcionar una plantilla o un valueconverter para hacer lo que quiero. Esta no es la pregunta que me interesa ... solo la pregunta en negrita de arriba.

Actualizar:

Después de algunas investigaciones adicionales provocadas por el comentario de ArsenMkrt, me hacen creer que esto fue en realidad un descuido. La evidencia es esta:

Hay una colección quees Llamado congelableFreezableCollection<T>. No produzco CollectionViews, lo que lo hace inadecuado para mis necesidades directamente.Sam Bent de MSFT lo dice en el enlace de arriba. Todavía no puedo encontrar información de contacto para él, pero planeo discutir esto con él si tengo la oportunidad.

Mi plan actual para solucionar este problema es crear una nueva colección con las propiedades de CompositeCollection yFreezableCollection<T>. No sé si funcionará todavía, pero estoy pensando en algo como esto:

public class BindableCompositeCollection : FreezableCollection<object>, ICollectionViewFactory

Si alguien tiene una mejor opción, me gustaría escucharla!

Respuestas a la pregunta(1)

Su respuesta a la pregunta