我需要编写一个应该只接受某种类型的子控件的控件。在功能上它像Selector一样工作,我可以选择/激活它的孩子,但似乎我不能从Selector派生,因为ItemsControl可以采用任何类型的子(对象)。我真的希望在这里有编译时类型安全。因此,当添加错误类型的子项时抛出异常不是一种选择。
这种约束似乎是必要的,因为父控件需要依赖于子控件中的某些属性和行为。孩子们与父母也有一些直接的沟通。
这样的事情通常是如何在WPF中处理的。
答案 0 :(得分:1)
ItemsControl
将他们的孩子包装在您选择的项目容器类型中。因此,您知道ItemsControl
的孩子将永远属于那种类型。例如,ListBox
es始终以ListBoxItem
为子项。