2011-09-09 16 views
0

タブコントロール の新しいテンプレートを作成しています。添付ファイルのようなアイテムを整理する必要があります。以下のスタイルは、メインのタブと内容を持つことです...コンテンツ(コンテンツプレゼンター)に言及しながら、グリッドの列/行を指定する必要があります。したがって、行/列を "0"、 " 0 "..すべてのコンテンツは左上の領域に表示されます...1つのコンテンツプレゼンターの3/4を指定する方法は?

グリッドの3/4の領域でコンテンツプレゼンターを指定する方法を教えてください。

enter image description here

<Style x:Key="OutlookTabControlStyle" TargetType="{x:Type TabControl}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TabControl}"> 
        <Grid ClipToBounds="true" SnapsToDevicePixels="true" 
         KeyboardNavigation.TabNavigation="Local"> 
         <Grid.RowDefinitions> 
          <RowDefinition x:Name="RowDefinition0" Height="Auto"/> 
          <RowDefinition x:Name="RowDefinition1" Height="*"/> 
         </Grid.RowDefinitions> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition x:Name="ColumnDefinition0"/> 
          <ColumnDefinition x:Name="ColumnDefinition1" Width="0"/> 
         </Grid.ColumnDefinitions> 
         <Grid x:Name="ContentPanel" Grid.Column="0" Grid.Row="1"> 
          <ContentPresenter SnapsToDevicePixels= 
          "{TemplateBinding SnapsToDevicePixels}" Margin="2,2,2,2" 
          x:Name="PART_SelectedContentHost" 
          ContentSource="SelectedContent"/>       
         </Grid> 
         <StackPanel HorizontalAlignment="Stretch" Margin="0,-2,0,0" 
         x:Name="HeaderPanel" VerticalAlignment="Bottom" Width="Auto" 
         Height="Auto" Grid.Row="1" IsItemsHost="True"/> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsEnabled" Value="false"> 
          <Setter Property="Foreground" 
          Value="{DynamicResource 
          {x:Static SystemColors.GrayTextBrushKey}}"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

私の質問は、私は、コンテンツparesenterとして(メインタブ領域以外の)残りの部分を割り当ててくださいどのように...私は1つのオプションとしてキャンバスを見ることができています。あなたがこれについてもっと知っていれば私を助けてください。

答えて

4

幅が*、幅が3*の1つの列を持つグリッドを作成します。これは私が通常どのMathConverterを使用し、あなたの2列3回、最初の列のサイズ、またはあなたがグリッドを使用しない代替案として

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="3*" /> 
    </Grid.ColumnsDefinitions> 

</Grid> 

合計サイズの3/4を作るようになります私は数式によって束縛された値を調整することができます。 MathConverterためのコードは、私は、画像内の「メインタブ」領域以外の全ての領域を意味する3/4によってhere

<Grid Canvas.Left="{Binding ElementName=ParentPanel, Path=ActualWidth, 
     Converter={StaticResource MyMathConverter}, 
     [email protected]*.75}" /> 
+0

を見出すことができます。私は2つのコンテンツプレゼンターを与える場合..私は "メインタブの"子タブとその実際の内容のためにそれの1つだけを使用することができます - 私は同じエリアに表示する必要があります...私はあなたに明確です – Relativity

+0

@Relativity私の答えのアップデートを参照 – Rachel

+0

だから... 3/4の部分をコンテンツプレゼンターとして使うことはできますか? – Relativity

関連する問題