我有一个自定义控件,它有一个依赖项属性,应该填充控件中的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的原因是因为我希望能够将任何对象绑定到数据网格,就像数据网格可以...它不关心你绑定到它的类型 - 我怎样才能让我的用户控制到不在乎?