2010-10-27 3 views
4

У меня есть CollectionViewSource как ItemsSource моего DataGrid. В Window.Resources у меня есть такое определение:Коллекция Binding на CollectionViewSource Источник собственности

<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' 

Что случилось? Как я могу это сделать?

ответ

3

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

 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) 
+0

Мне тоже помогает. Благодарю. –

1

Вам не нужно связывать 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

+0

Я стараюсь, и это работает ... но если я изменю «MyObservebleCollection» на DataContext (ясно, добавлять или удалять элементы) CollectionViewSource кажется потерянным источника ассоциации. –

Смежные вопросы