Как привязать коллекцию объектов к пользовательскому элементу управления - PullRequest
0 голосов
/ 29 ноября 2011

У меня есть пользовательский элемент управления, в котором есть сетка данных, и я хочу иметь возможность привязать 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 Ответ

1 голос
/ 29 ноября 2011

Свойства оболочки для свойств зависимости должны иметь то же имя, что и свойство зависимости, то есть «ItemsSource» вместо «ItemsSourceCollection».

Это правило XAML. Проверьте эту статью . Он написан для WPF, но также и для Silverlight.

Опять же, по соглашению, имя свойства оболочки должно совпадать с именем, выбранным и заданным в качестве первого параметра вызова Register, который зарегистрировал свойство. Если ваша собственность не соответствует соглашению, это не обязательно отключает все возможные варианты использования, но вы столкнетесь с несколькими заметными проблемами

...