在运行时,我正在创建 WPF控件。它可以是任何WPF控件。
我想知道这个WPF控件是否是容器控制。 也就是说,这个控件可以嵌入/包含另一个控件。
是否存在可以实现上述目的的任何属性? 例如标签,面板,groupBox可以包含其他控件,如按钮,但textBOX cant。
答案 0 :(得分:1)
在WPF中,有一些基类控制从。扩展。
ContentControl
:大多数控件都是从此扩展的,因为大多数控件都可以在其中存储某种类型的单个内容。ItemsControl
:这些是集合控件的类型,其中包含内容的集合。Panel
:这些是布局的特殊控件。他们实施ArrangeOverride
和MeasureOverride
方法来衡量/安排其中的子控件。其中大多数还会暴露附加属性以便最佳使用。话虽这么说,您通常希望使用is
运算符来检查您的控件是否继承了您的意图。您可以是特定的或一般的,但通常您希望尽可能一般。我不确定你的“容器”是什么意思,这就是为什么我列出了可以包含其他控件的三(3)个典型基本控件。例如:
if (myControl is ContentControl)
{
// Do something here.
}
答案 1 :(得分:0)
除了here之外,here和TabControl
提到的所有控件都继承自Panel
所以你可以这样做:
if (myControl is Panel || myControl is TabControl)
{
// Then it's a container
}