WPF Tab Margins - PullRequest
       29

WPF Tab Margins

8 голосов
/ 23 марта 2011

У меня есть WPF TabControl, с некоторыми TabItems. Мне нужны поля слева и справа от группы TabItems, если это имеет смысл.

Я собираюсь нарисовать немного искусства ASCII ниже, чтобы сделать точку. Я хочу установить фиксированное поле слева от вкладки 1, но я также хочу установить фиксированное поле справа от вкладки 3.

|--------------------------------------------------|
|            |-----||-----||-----|                 |
| <-Margin-> |  1  ||  2  ||  3  | <-Margin->      |
|------------|     ||-----||-----|-----------------|
|                                                  |
|  How do I get margin or padding on both          |
|    sides of my tabs?                             |
|                                                  |
|                                                  |
|--------------------------------------------------|

Количество вкладок не ограничено, поэтому они будут складываться по мере добавления. Для этого он должен работать правильно.

Также обратите внимание, что я не хочу уменьшать весь элемент управления вкладками. Только вкладки табуляции или заголовки или что бы то ни было.

Я обнаружил, что если я установлю вкладки так, чтобы они имели поле, например, "60,0, -60,0", я получу желаемый эффект слева от вкладок, но это похоже на взлом, и я выиграл не работает для правой стороны.

Я использую WPF 4.0 в VS 2010.

Ура!

1 Ответ

5 голосов
/ 23 марта 2011

Попробуйте использовать этот стиль.

   <Style  TargetType="{x:Type TabControl}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TabControl}">
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="*"/>
                            </Grid.RowDefinitions>
                            <TabPanel
             Grid.Row="0"
             Panel.ZIndex="1"
             Margin="60,0,60,-1"
             IsItemsHost="True"
             Background="Transparent" />
                            <Border
             Grid.Row="1"
             BorderBrush="Black"
             BorderThickness="1"
             CornerRadius="0, 12, 12, 12" >
                                <Border.Background>
                                    <LinearGradientBrush>
                                        <GradientStop Color="LightBlue" Offset="0" />
                                        <GradientStop Color="White" Offset="1" />
                                    </LinearGradientBrush>
                                </Border.Background>
                                <ContentPresenter ContentSource="SelectedContent" />
                            </Border>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

РЕДАКТИРОВАТЬ

Вы можете задать поле непосредственно для панели вкладок внутри контрольной панели tabcontrol

Проверьте ссылку для более

http://www.switchonthecode.com/tutorials/the-wpf-tab-control-inside-and-out

...