2012-05-31 42 views
0

如何使用選項卡控件將HCC垂直拉伸至「拉伸」?我怎樣才能做到這一點?WPF HeaderContent控件垂直對齊

這裏是標題內容控制XAML:

<HeaderedContentControl 
Content="{Binding Path=Workspaces}" 
ContentTemplate="{StaticResource WorkspacesTemplate}" /> 

下面是對應的樣式信息:

<DataTemplate x:Key="WorkspacesTemplate"> 
    <TabControl 
    IsSynchronizedWithCurrentItem="True" 
    ItemsSource="{Binding}" 
    ItemTemplate="{StaticResource ClosableTabItemTemplate}" 
    Margin="4" 
    /> 
</DataTemplate> 

<DataTemplate x:Key="ClosableTabItemTemplate"> 
<DockPanel> 
    <Button 
    Command="{Binding Path=CloseCommand}" 
    Content="X" 
    Cursor="Hand" 
    DockPanel.Dock="Right" 
    Focusable="False" 
    FontFamily="Arial" 
    FontSize="9" 
    FontWeight="Bold" 
    Margin="0,1,0,0" 
    Padding="0" 
    VerticalContentAlignment="Bottom" 
    Width="16" Height="16" 
    /> 
     <ContentPresenter 
    Content="{Binding Path=DisplayName}" 
    /> 
</DockPanel> 

回答

2

如果您檢查HeaderedContentControl控制模板,你會發現它將內容放入StackPanel中,這就是爲什麼內容不能垂直拉伸的原因。這是默認的模板:

<Style x:Key="HeaderedContentControlStyle" 
     TargetType="{x:Type HeaderedContentControl}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type HeaderedContentControl}"> 
       <StackPanel> 
        <ContentPresenter ContentSource="Header"/> 
        <ContentPresenter/> 
       </StackPanel> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

因此,如果我們有這樣的網格替換的StackPanel:

<Style x:Key="HeaderedContentControlStyle" 
     TargetType="{x:Type HeaderedContentControl}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type HeaderedContentControl}"> 
       <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto"/> 
         <RowDefinition Height="*"/> 
        </Grid.RowDefinitions> 
        <ContentPresenter ContentSource="Header"/> 
        <ContentPresenter Grid.Row="1"/> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

,並使用該樣式

<HeaderedContentControl  
    Style="{StaticResource HeaderedContentControlStyle}" 
    Content="{Binding Path=Workspaces}"  
    ContentTemplate="{StaticResource WorkspacesTemplate}" /> 

則內容應該垂直拉伸。

+0

優秀 - 謝謝! – MickeySixx