dth*_*her 14 wpf layout wpf-controls
我有一个包含TreeView的HeaderedContentControl.
<HeaderedContentControl Header="Steps" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<TreeView Name="WizardSteps" ItemsSource="{Binding WizardSteps}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<!-- Hierarchical data templates here -->
</TreeView>
</HeaderedContentControl>
Run Code Online (Sandbox Code Playgroud)
虽然HeaderedContentControl伸展以填充其父网格内的区域,但我的TreeView控件仅占用可用空间的一小部分.
如何扩展我的TreeView以填充HeaderedContentControl的内容区域?
Qua*_*ter 27
默认控件模板HeaderedContentControl是这样的:
<ControlTemplate TargetType="{x:Type HeaderedContentControl}">
<StackPanel>
<ContentPresenter ContentSource="Header" />
<ContentPresenter />
</StackPanel>
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)
StackPanel让每个孩子都有自己想要的高度,因此TreeView不会伸展.您可以将其替换为使用DockPanel的模板:
<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>
Run Code Online (Sandbox Code Playgroud)
如果要使其更具可重用性,请在样式中设置模板并使用VerticalContentAlignment:
<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>
Run Code Online (Sandbox Code Playgroud)
这样,默认情况下,所有HeaderedContentControl都将填充其内容,您可以通过在单个控件上设置VerticalContentAlignment来覆盖它.
或者,您可以直接使用DockPanel而不是HeaderedContentControl.
| 归档时间: |
|
| 查看次数: |
4522 次 |
| 最近记录: |