Cóż, jestem zdezorientowany.Jak działa powiązanie z kolekcjami?
Jeśli moja kontrola ma właściwość zależności ItemsSource
od IEnumerable
typ i użytkownik wiąże kolekcję, jaki obiekt mam w DependencyPropertyChangedEventArgs.NewValue
?
O ile mi wiadomo, CollectionView
jest niejawnie stworzony dla kolekcji i oczekuję, że args.NewValue
będzie typu ICollectionView
.
Od this blog:
Kiedy użytkownik łączy właściwości WPF do zbierania danych, WPF automatycznie tworzy widok zawinąć kolekcji i wiąże właściwość do widoku, a nie surowy kolekcja. To zachowanie zawsze ma wartość i jest niezależne od źródła CollectionViewSource.
Ale debugger (VS 2012, .net v.4.0) pokazuje mi, że otrzyma oryginalną kolekcję surowego w NewValue
. (BindsDirectlyToSource nie jest ustawiony i domyślnie jest równy false)
Jak to możliwe ?!
Nie mogę zrozumieć, jak w tym przypadku kontrola WPF obsługuje sortowanie, grupowanie i filtrowanie.
W jaki sposób i kiedy CollectView jest wstrzykiwany i stosowany?
Oznacza to, że moja kontrola MA Zażądać CollectionView dla przechodzącej kolekcji i nie ma wsparcia grupowania, filtrowania i sortowania z pudełka. Odpowiedzialność za wdrożenie wspomnianej funkcjonalności spoczywa na kontrolerach, prawda? –
Dostępna jest natychmiastowa obsługa grupowania, filtrowania i sortowania po jawnym powiązaniu z [CollectionViewSource] (http://msdn.microsoft.com/en-us/library/system.windows.data.collectionviewsource .aspx). Zobacz "Jak utworzyć widok" w [Powiązanie z kolekcjami] (http://msdn.microsoft.com/en-us/library/ms752347.aspx#binding_to_collections) – Clemens
Cóż, wygląda na to, że tak. GroupItem jest tworzony przez ItemsControl ... –