Beh, sono confuso.Come funziona davvero il binding alle raccolte?
Se il mio controllo ha una proprietà di dipendenza ItemsSource
di IEnumerable
tipo e l'utente associa la raccolta ad esso quale oggetto ho in DependencyPropertyChangedEventArgs.NewValue
?
Per quanto ne so, CollectionView
viene creato implicitamente per le raccolte e mi aspetto che args.NewValue
sia di tipo ICollectionView
.
Da this blog:
Quando un utente si lega una proprietà WPF ad una raccolta di dati, WPF crea automaticamente una vista per avvolgere la raccolta, e lega la proprietà alla vista, non il grezzo collezione. Questo comportamento si verifica sempre ed è indipendente da CollectionViewSource.
Ma debugger (VS 2012, .net v.4.0) mi mostra che ricevo collezione RAW originale in NewValue
. (BindsDirectlyToSource non è impostato ed è uguale a false per impostazione predefinita)
Come può essere ?!
Non riesco a capire come in questo caso i controlli WPF supportino l'ordinamento, il raggruppamento e il filtraggio.
Come e quando viene iniettato e utilizzato CollectionView?
Questo significa che il mio controllo deve richiedere CollectionView per la raccolta passata e non vi è alcun supporto per raggruppare, filtrare e ordinare fuori dalla scatola. È responsabilità del controllo implementare la funzionalità sopra citata, non è vero? –
È disponibile il supporto immediato per il raggruppamento, il filtraggio e l'ordinamento quando si esegue esplicitamente il binding a una [CollectionViewSource] (http://msdn.microsoft.com/en-us/library/system.windows.data.collectionviewsource aspx). Vedi "Come creare una vista" in [Collegando alle raccolte] (http://msdn.microsoft.com/en-us/library/ms752347.aspx#binding_to_collections) – Clemens
Bene, sembra sì. GroupItem viene creato da ItemsControl stesso ... –