まあ、私は混乱しています。コレクションへのバインディングはどのように機能しますか?
私のコントロールにはItemsSource
のIEnumerable
タイプがあり、ユーザーがコレクションにバインドする場合、どのオブジェクトを持っていますかDependencyPropertyChangedEventArgs.NewValue
?
私が知る限り、CollectionView
は暗黙のうちにコレクションのために作成されており、args.NewValue
はICollectionView
であると予想しています。 this blogから
:
ユーザーはデータの収集、WPF は自動的に、コレクションをラップするビューを作成しし、ビューに プロパティをバインドし、ない生にWPFのプロパティをバインドしますコレクション。この動作は常に が発生し、CollectionViewSourceから独立しています。
しかし、デバッガ(VS 2012、.net v.4.0)は、NewValue
に元の生のコレクションを受け取ったことを示しています。 (BindsDirectlyToSourceはデフォルトでは設定されておらずfalseに等しい)
これはどうやってできますか?
この場合、WPFコントロールがソート、グループ化、およびフィルタリングをどのようにサポートしているのか理解できません。
CollectionViewを注入して使用する方法と時期はいつですか?
これは、コントロールが渡されたコレクションのCollectionViewを要求し、グループ化、フィルタリング、並べ替えをサポートしていないことを意味します。前述の機能を実装するのはコントロールの責任ですね。 –
[CollectionViewSource](http://msdn.microsoft.com/en-us/library/system.windows.data.collectionviewsource)に明示的にバインドすると、グループ化、フィルタリング、並べ替えのための既定のサポートがあります。 .aspx)。 [コレクションへのバインド]の「ビューを作成する方法」を参照してください(http://msdn.microsoft.com/en-us/library/ms752347.aspx#binding_to_collections) – Clemens
これははいと思われます。 GroupItemはItemsControl自体によって作成されています... –