0

タブ コントロールを使用して HCC を垂直方向に「ストレッチ」するにはどうすればよいですか? どうすればこれを達成できますか?

ヘッダー コンテンツ コントロール 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>

4

1 に答える 1

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 を次のような Grid に置き換えると:

<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}" /> 

コンテンツは垂直方向に伸びるはずです。

于 2012-05-31T18:33:19.553 に答える