在Silverlight用户控件中使用泛型集合

时间:2010-07-14 12:05:43

标签: silverlight generics user-controls

有一个界面:

public interface IFoo {
}

Silverlight用户控件具有IFoo个实例的集合:

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

有一个实现接口的抽象类:

abstract public class Foo : IFoo {}

一个进一步源于此的课程:

public class DerivedFoo : Foo {}


尽管如此,我试图通过XAML将DerivedFoo的实例添加到控件的集合中,但是我收到的错误是DerivedFoo不是IFoo类型,不能在泛型集合中使用。

我确实在一个论坛中发现了一个帖子,说这是Silverlight 3中的一个错误但是会被修复(我使用的是Silverlight 4)。这仍然是一个错误,还是我错了?

更新的 我的代码在家里,而且我在工作,所以我不能发布实际的XAML,但是从内存中可以看出:

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

1 个答案:

答案 0 :(得分:1)

答案是......

通用集合的CollectionChanged事件处理程序在Add操作期间进行了不正确的强制转换。