У меня есть пользовательский элемент управления Workspace
, который наследуется от Control
, и внутри него есть DependencyProperty
, в котором мне нужно указать пользовательский IEnumerable<IFoo>
(я также пытался сделать его не универсальным IEnumerable
).
Public Shared ReadOnly FoosProperty As DependencyProperty = DependencyProperty.Register("Foos", GetType(IEnumerable(Of IFoo)), GetType(Workspace), New FrameworkPropertyMetadata())
Public Property Foos() As IEnumerable(Of IFoo)
Get
Return CType(Me.GetValue(FoosProperty), IEnumerable(Of IFoo))
End Get
Set(ByVal value As IEnumerable(Of IFoo))
Me.SetValue(FoosProperty, CType(value, IEnumerable(Of IFoo)))
End Set
End Property
Все отлично работает, когда я создаю и устанавливаю массив IFoo
в коде, но когда я пытаюсь добавить их в XAML, я получаю ошибки.Если я добавлю один IFoo
, я получу ошибку
- "FooItem не является допустимым значением для свойства" Foos "."
во время выполнения.Если я пытаюсь добавить несколько элементов IFoo
, я получаю три ошибки во время компиляции
- Объект «Рабочая область» уже имеет дочерний элемент и не может добавить «FooItem».«Рабочая область» может принимать только одного дочернего элемента.
- Свойство «Foos» не поддерживает значения типа «FooItem».
- Свойство «Foos» задается более одного раза.
Я прочитал ошибки, чтобы показать, что WPF не преобразует xaml в массив элементов, как это обычно бывает.Вот как я пытаюсь добавить элементы в XAML
<Workspace>
<Workspace.Foos>
<FooItem />
<FooItem />
</Workspace.Foos>
</Workspace>
В прошлом я создавал аналогичные свойства DependencyProperties, и у меня никогда не было проблем, поэтому я предполагаю, что упускаю что-то простое.
Спасибо за любую помощь!