WPF:什么是通用容器控件?

29
在 HTML 中,通用容器控件是 DIV。它本身不做任何事情,但它非常适合作为挂载其他内容的位置。
同样,在 WinForms 中,通用容器控件是 Panel。同样,这是我将用作稍后加载其他控件的占位符。
那么在 WPF 中应该使用什么?
2个回答

37

我认为最接近你所寻找的东西是ContentControl。它本身没有布局,也没有默认的UI(除非你将其模板化以执行其中一个或两个操作),但可以将任何对象作为其Content属性(WPF UIElement或其他)并通过赋值给其ContentTemplate属性的DataTemplate来为CLR对象提供任何UI。在这方面,它提供了一个很好的地方来注入其他内容(就像HTML中的div一样)。此外,它还是许多标准内置控件的基类:ButtonListBoxItemUserControlWindow

WPF面板不太适合用作占位符,因为它们无法被模板化或通过绑定设置子元素,除非它们包含在其他处理注入绑定内容的控件中,例如ItemsControl-ItemsPresenter-ItemsPanel的关系。


21

一些常用的容器包括:

网格(Grid)
堆栈面板(StackPanel)
停靠面板(DockPanel)
换行面板(WrapPanel)
画布(Canvas)

另请参阅MSDN面板概述


此外,这完全取决于您需要对这些后加载的控件做什么。例如,它们应该具有什么布局等。在其中一种情况下,我选择了一个网格。如果您需要加载多个控件,则 DockPanel 可能不是很好的选择。 - Joey
1
在这种情况下,我希望尽可能少地做出假设。任何布局都应该由正在加载的控件处理,因此单个控件限制是有意义的。 - Jonathan Allen
不是我预期的简单答案,但那个链接真的很值得一读。 - Jonathan Allen
我想要一个最简单的控件,它有模板,这样我就可以在我的样式中使用它(我只想将其用作可动画元素,但不提供其他功能)。ContentControl 是正确的选择吗?还是有更适合此需求的控件? - M.kazem Akhgary
这完全没有回答问题。 - Bretton Wade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接