Как указать 3/4 от одного предъявителя контента? - PullRequest
0 голосов
/ 10 сентября 2011

Я создаю новый шаблон для элемента управления Tab, в котором мне нужно расположить элементы, такие как прикрепленное изображение.Приведенный ниже стиль состоит в том, чтобы иметь главные вкладки ... и содержимое ... При упоминании содержимого (предъявителя содержимого) я должен указать столбец / строку сетки ... Поэтому, если я использую столбец / строку строки в качестве "0", "0 ".. тогда все мое содержимое будет в левой верхней области ...

Скажите, пожалуйста, как мне указать предъявителя содержимого с 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 содержимого ... Я вижу Canvas как один из вариантов.Пожалуйста, помогите мне, если вы знаете больше об этом.

1 Ответ

4 голосов
/ 10 сентября 2011

Создайте сетку с двумя столбцами: один столбец с шириной * и один с шириной 3*.Это сделает ваш второй столбец в 3 раза больше первого столбца, или 3/4 от общего размера

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

</Grid>

В качестве альтернативы вы не хотите использовать Grid, я обычно используюMathConverter, который позволяет мне корректировать связанное значение с помощью математической формулы.Код для MathConverter можно найти здесь

<Grid Canvas.Left="{Binding ElementName=ParentPanel, Path=ActualWidth,
      Converter={StaticResource MyMathConverter}, 
      ConverterParameter=@VALUE*.75}" />
...