Привязка коллекции к свойству источника CollectionViewSource - PullRequest
4 голосов
/ 27 октября 2010

У меня CollectionViewSource как ItemsSource моего DataGrid. В Window.Resources у меня есть это определение:

<CollectionViewSource x:Key="ItemsPoolCollectionView"  
     Source="{Binding Path=MyObservableCollection, Mode=OneWay}" />

Теперь я хотел бы получить то же определение из кода, поэтому я сделал это:

Dim _cvs as CollectionViewSource = New CollectionViewSource
Dim bindSource = New Binding() With {
        .Path = New PropertyPath("MyObservableCollection"),
        .Mode = BindingMode.OneWay }
_cvs.SetValue(CollectionViewSource.SourceProperty, bindSource)

но у меня есть эта ошибка в последнем утверждении:

'System.Windows.Data.Binding' is not a valid value for property 'Source'

Что не так? Как мне это сделать?

Ответы [ 2 ]

3 голосов
/ 27 октября 2010

Я решаю! ... таким образом:

      Dim _cvs as CollectionViewSource = New CollectionViewSource
      Dim bindSource = New Binding() With {
              .Source = Me.DataContext
              .Path = New PropertyPath("MyObservableCollection"),
              .Mode = BindingMode.OneWay }
      BindingOperations.SetBinding(cvs, CollectionViewSource.SourceProperty, bindSource)
1 голос
/ 27 октября 2010

Вам не нужно связывать CollectionViewSource, чтобы он автоматически «связывался»; просто установите значение свойства Source напрямую:

Dim _cvs as CollectionViewSource = New CollectionViewSource
_cvs.Source = Me.MyObservableCollection

(простите за мой ржавый VB.net)

Подробнее см. В следующем сообщении на форуме: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/f44df11b-dfa8-4173-bbc8-051875fce4cc

...