爲HeaderedContentControl
默認控件模板是這樣的:
<ControlTemplate TargetType="{x:Type HeaderedContentControl}">
<StackPanel>
<ContentPresenter ContentSource="Header" />
<ContentPresenter />
</StackPanel>
</ControlTemplate>
的StackPanel中讓每個孩子有自己的理想高度,所以樹視圖不會延長。
<HeaderedContentControl Header="Steps" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch" >
<HeaderedContentControl.Template>
<ControlTemplate TargetType="HeaderedContentControl">
<DockPanel>
<ContentPresenter DockPanel.Dock="Top" ContentSource="Header" />
<ContentPresenter />
</DockPanel>
</ControlTemplate>
</HeaderedContentControl.Template>
如果你想讓它更可重複使用,在樣式模板設置和使用VerticalContentAlignment:你可以與使用DockPanel中的模板替換它
<Style TargetType="HeaderedContentControl">
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="HeaderedContentControl">
<DockPanel>
<ContentPresenter DockPanel.Dock="Top" ContentSource="Header" />
<ContentPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
這樣一來,你的所有HeaderedContentControls將默認填充其內容,並且可以通過在單個控件上設置VerticalContentAlignment來覆蓋該內容。
或者,您可以直接使用DockPanel而不是HeaderedContentControl。
感謝您的詳細解釋和XAML片段。我想我可以直接使用DockPanel,但很高興看到ControlTemplates如何實現相同效果的示例。 – dthrasher 2010-07-16 01:31:54