2010-02-21 54 views
1

我需要编写一个应该只采用某种类型的子控件的控件。在功能上,它像一个选择器一样工作,我可以选择/激活其子元素,但似乎我无法从选择器派生,因为ItemsControl可以接受任何类型的子元素(对象)。我真的想在这里有编译时的类型安全。因此,添加错误类型的子项时抛出异常不是一种选择。只能采取某种类型的子元素的选择器?

这个约束似乎是必要的,因为父控件需要依赖某些属性并在其子节点中运行。还有一些孩子与父母直接沟通。

这是怎么回事,通常在WPF中处理。

回答

1

ItemsControl将您的孩子包裹在您选择的物品容器类型中。因此,你知道你的ItemsControl的孩子将永远是那种类型。例如,ListBox es总是有ListBoxItem作为孩子。

+0

如何为我的Selector派生类选择项目容器类型? – bitbonk 2010-02-21 20:50:27

+0

根据这篇文章:http://drwpf.com/blog/2008/07/20/itemscontrol-g-is-for-generator/它必须是GetContainerForItemOverride();) – bitbonk 2010-02-21 21:37:57