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