2009-09-29 4 views
6

Das Standardverhalten des WPF-Tabcontrols besteht darin, die Registerkartenheader nebeneinander zu platzieren, ohne dass dazwischen ein leerer Platz vorhanden ist. Was, wenn ich eine Lücke zwischen den Headern angeben wollte? Muss ich dafür eine Kontrollvorlage definieren? Ich bin relativ neu in WFP und jede Hilfe wird geschätzt.WPF-Registersteuerungsabstand zwischen den Headern

Dank

Antwort

9

Ich glaube, Sie brauchen, um eine benutzerdefinierte Steuervorlage für den TabItem zu definieren, vielleicht sogar einen für die TabControl. Hier sehen Sie ein Beispiel für ein TabItem, das für einige Separationen einen Spacer verwendet.

<Style 
    x:Key="SpacedTab" 
    TargetType="{x:Type TabItem}"> 
    <Setter 
     Property="Template"> 
     <Setter.Value> 
      <ControlTemplate 
       TargetType="{x:Type TabItem}"> 
       <Border 
        x:Name="Spacer" 
        Width="Auto" 
        Height="Auto" 
        Padding="0 0 5 0" 
        Margin="0 0 0 0" 
        BorderBrush="Transparent" 
        BorderThickness="0"> 
        <Border 
         x:Name="Border" 
         MinWidth="150" 
         Width="Auto" 
         Height="30" 
         Background="Gray" 
         BorderBrush="DarkGray" 
         BorderThickness="0,0,0,0" 
         CornerRadius="6,6,0,0" 
         Cursor="Hand" 
         VerticalAlignment="Bottom"> 
         <ContentPresenter 
          x:Name="ContentSite" 
          TextElement.FontSize="10pt" 
          TextElement.FontFamily="Arial" 
          TextElement.Foreground="Black" 
          VerticalAlignment="Center" 
          HorizontalAlignment="Center" 
          ContentSource="Header" 
          Margin="8,3,8,3" 
          Width="Auto" 
          Height="Auto" /> 
        </Border> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Hoffentlich ist das ein Schub in die richtige Richtung; Sie müssen dies immer noch als Stilressource hinzufügen und von Ihrem TabControl -> TabItem aus referenzieren.

+1

Okay, ich werde es ausprobieren. Danke –

3

Es ist einfach, im Designer Platz zu schaffen. Wählen Sie die Registerkarte, die Sie verschieben möchten, indem Sie mit der Registerkarte ganz rechts beginnen. Halten Sie dann ctrl gedrückt und bewegen Sie die Registerkarte mit der rechten Pfeiltaste nach rechts. Machen Sie das gleiche mit den anderen Tabs. Dann können Sie den Rand im XAML-Code manuell anpassen.

+1

Keine Notwendigkeit für einen Designer. Kumulative Ränder im Code funktionieren auch so [Tab] Space [Tab] [Tab] Space [Tab] würde linken und rechten Ränder von 0 für die erste Registerkarte, dann X für die zweite zwei Tabs und 2x für die letzte Registerkarte, wo x ist die Breite Raum" – byteit101

Verwandte Themen