3

据我了解,面板并不意味着有任何可见的“镀铬”。StackPanel、Grid 和 Canvas 没有任何可见元素(除了网格线,他们说它们仅用于调试布局。)

在我的示例中,我将创建一个使用附加属性来布置其子控件的自定义面板。但是,我希望我的自定义面板在背景中呈现各种可见的“网格”。网格的外观(大小和定位)将取决于子元素的大小和位置。

有哪些方法可以实现这一目标?作为 Silverlight 和 XAML 的新手,我的第一个猜测是创建一个自定义控件,其中包括用于布局的自定义面板。

我想我将能够找出具体的代码,但我需要指出正确的方向,即哪些构建块适合这种情况。

4

2 回答 2

2

您是正确的,自定义面板不能显示任何额外的 chrome;他们只能显示他们的孩子(网格是一个例外)。

要做你想做的事,你可以创建一个自定义面板,它只是添加额外的孩子来显示镶边。虽然这不是一个好的设计(因为面板的用户会在 Children 集合中看到这些额外的项目)。

最好的办法是按照你说的做:创建一个自定义 Control 来公开 Children 属性。该控件可以在内部使用私有自定义面板来布置这些元素(例如,TabControl 使用特殊的 TabPanel 来布置选项卡)。在 Controls 默认模板中,您可能希望将 Panels 的 Children 属性上的 TemplateBinding 用于 Control 的 Children 属性。

于 2009-11-03T19:11:31.277 回答
1

面板可以将装饰器添加到其子级,阅读这篇关于装饰器的文章:http: //msdn.microsoft.com/en-us/library/ms743737.aspx

于 2012-04-16T22:01:44.853 回答