0

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

我想知道这个 WPF 控件是否是一个容器控件。即这个控件是否可以嵌入/包含另一个控件。

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

4

2 回答 2

1

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

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

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

if (myControl is ContentControl)
{
    // Do something here.
}
于 2012-06-24T15:53:27.877 回答
0

这里这里提到的所有控件除了TabControl继承自Panel

因此,您可以执行以下操作:

if (myControl is Panel || myControl is TabControl)
{
    // Then it's a container
}
于 2012-06-24T14:45:10.327 回答