如何识别WPF控件是否是Container控件?

时间:2012-06-24 14:40:38

标签: wpf wpf-controls

在运行时,我正在创建 WPF控件。它可以是任何WPF控件。

我想知道这个WPF控件是否是容器控制。 也就是说,这个控件可以嵌入/包含另一个控件。

是否存在可以实现上述目的的任何属性? 例如标签,面板,groupBox可以包含其他控件,如按钮,但textBOX cant。

2 个答案:

答案 0 :(得分:1)

在WPF中,有一些基类控制从。扩展。

  • ContentControl:大多数控件都是从此扩展的,因为大多数控件都可以在其中存储某种类型的单个内容
  • ItemsControl:这些是集合控件的类型,其中包含内容的集合。
  • Panel:这些是布局的特殊控件。他们实施ArrangeOverrideMeasureOverride方法来衡量/安排其中的子控件。其中大多数还会暴露附加属性以便最佳使用。

话虽这么说,您通常希望使用is运算符来检查您的控件是否继承了您的意图。您可以是特定的或一般的,但通常您希望尽可能一般。我不确定你的“容器”是什么意思,这就是为什么我列出了可以包含其他控件的三(3)个典型基本控件。例如:

if (myControl is ContentControl)
{
    // Do something here.
}

答案 1 :(得分:0)

除了here之外,hereTabControl提到的所有控件都继承自Panel

所以你可以这样做:

if (myControl is Panel || myControl is TabControl)
{
    // Then it's a container
}