如何将对象集合绑定到自定义控件

时间:2011-11-28 20:20:15

标签: silverlight xaml binding custom-controls

我有一个自定义控件,其中包含一个数据网格,我希望能够将ItemsSource绑定到该数据网格,但我似乎无法让它工作。我有一个ObservableObjectCollection设置为依赖属性,但是当我尝试运行它时,我收到错误“无法将绑定转换为ObservableObjectCollection”。

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

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

我是否定义了依赖属性错误?我看到很多类似于这个问题的答案,他们都说要使用依赖属性。是什么赋予了?我正在使用ObservableObjectCollection,因为我不知道将哪种类型的对象绑定到控件。

1 个答案:

答案 0 :(得分:1)

依赖项属性的包装器属性应与依赖项属性同名,即“ItemsSource”而不是“ItemsSourceCollection”。

这是XAML规则。查看this article。它是为WPF编写的,但Silverlight也是如此。

  

同样,按照惯例,包装器属性的名称必须与选择的名称相同,并作为注册该属性的Register调用的第一个参数给出。如果您的财产不符合惯例,这不一定会禁用所有可能的用途,但您会遇到几个值得注意的问题