我有一个自定义控件,它有一个依赖项属性,应该填充控件中的datagrid的ItemsSource属性 . 由于某种原因,集合永远不会被填充,而ItemsSource总是空的 .

Public Shared ReadOnly ItemsSourceProperty As DependencyProperty = DependencyProperty.Register("ItemsSource", GetType(ObservableObjectCollection), GetType(HomePageControl), New PropertyMetadata(New ObservableObjectCollection, New PropertyChangedCallback(AddressOf ItemsSourceCallback)))

Public Property ItemsSource As ObservableObjectCollection
        Get
            Return DirectCast(GetValue(HomePageControl.ItemsSourceProperty), ObservableObjectCollection)
        End Get
        Set(value As ObservableObjectCollection)
            SetValue(HomePageControl.ItemsSourceProperty, value)
        End Set
End Property

XAML:

<Controls:HomePageControl x:Name="myControl"
                                  Margin="0,25,0,0" 
                                  Grid.Row="1"
                                  HeaderText="{Binding Source={StaticResource MainViewModel}, Path=CurrentUser, Mode=TwoWay, UpdateSourceTrigger=Default}"
                                  HeaderCount="30"
                                  HeaderLinkText="This is optional."
                                  HeaderLinkURI="/Projects"
                                  ItemsSource="{Binding Source={StaticResource MainViewModel}, Path=TaskList, Mode=TwoWay, UpdateSourceTrigger=Default}"
                                  GridViewStyle="{StaticResource RadGridViewStyleNoFlag}"
                                  />

我还有其他五个可以正常工作的DP,3个字符串和一个样式(用于设置datagrid的列)和一个URI . 我可以直接设置它们,如“This is optional”,或者像HeaderText一样绑定它们,但ItemsSource属性似乎永远不会被绑定...控件之外的gridview使用与之相同的绑定控件内的ItemsSource绑定被填充...所以绑定确实返回一个已填充的集合,但它没有进入自定义控件内的datagrid .

如果我将ObservableObjectCollection更改为我在我绑定的集合中使用的对象类型,那么它可以正常工作 . 我想使用ObservableObjectCollection的原因是因为我希望能够将任何对象绑定到数据网格,就像数据网格可以...它不关心你绑定到它的类型 - 我怎样才能让我的用户控制到不在乎?