Использование общих коллекций в пользовательских элементах управления Silverlight - PullRequest
0 голосов
/ 14 июля 2010

Есть интерфейс:

public interface IFoo {
}

Пользовательский элемент управления Silverlight имеет коллекцию IFoo экземпляров:

public ObservableCollection<IFoo> Items { get; set; }

Существует абстрактный класс, который реализует интерфейс:

abstract public class Foo : IFoo {}

И класс, который в дальнейшем происходит от этого:

public class DerivedFoo : Foo {}


После всего этого я пытаюсь добавить экземпляры DerivedFoo в коллекцию элемента управления через XAML, но получаю сообщение об ошибке, что DerivedFoo не относится к типу IFoo и не может использоваться в универсальной коллекции.

Я нашел сообщение на форуме, в котором говорилось, что это ошибка в Silverlight 3, но она будет исправлена ​​(я использую Silverlight 4). Это все еще ошибка или я говорю об этом неправильно?

Обновление: Мой код дома, и я на работе, поэтому я не могу опубликовать фактический XAML, но по памяти это было примерно так:

<my:Thing>
    <my:Thing.Items>
        <my:DerivedFoo ... />
    </my:Thing.Items>
</my:Thing>

1 Ответ

1 голос
/ 15 июля 2010

Ответ ...

Обработчик события CollectionChanged для универсальной коллекции произвел неправильное приведение во время действия Add.

...