【问题标题】:Collection Binding on CollectionViewSource Source PropertyCollectionViewSource 源属性上的集合绑定
【发布时间】:2011-05-01 04:44:08
【问题描述】:

我的DataGrid 中有一个CollectionViewSource 作为ItemsSource。在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'

怎么了?我怎样才能做到这一点?

【问题讨论】:

    标签: wpf binding wpfdatagrid collectionviewsource


    【解决方案1】:

    我解决! ...这样:

          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)
    

    【讨论】:

    • 这对我也有帮助。谢谢。
    【解决方案2】:

    您无需绑定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

    【讨论】:

    • 我尝试过,它可以工作......但如果我在 datacontext 上更改“MyObservebleCollection”(清除、添加或删除项目),collectionviewsource 似乎失去了源关联。
    猜你喜欢
    • 1970-01-01
    • 2011-03-01
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    相关资源
    最近更新 更多