我的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'
怎么了?我怎么能做到这一点?
答案 0 :(得分: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)
答案 1 :(得分: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