开发者

How to specify 3/4th of are for one content presenter?

开发者 https://www.devze.com 2023-04-04 08:58 出处:网络
I am creating a new template for Tab control in which I need to arrange items like attached image. The style given below is to have main tabs ..and contents... While mentioning the content (content p

I am creating a new template for Tab control in which I need to arrange items like attached image. The style given below is to have main tabs ..and contents... While mentioning the content (content presenter) I have to specify the grid column/row...So if I use row column/row as "0","0"..then all my contents will in the left top area...

Please tell me how do I specify a content presenter with 3/4 area of the grid.

How to specify 3/4th of are for one content presenter?

 <Style x:Key="OutlookTabContr开发者_如何学GoolStyle" 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>

My question is how do I allocate the remaining part (other than main tabs area) as content paresenter... I can see Canvas as one option. please help me if you know more about this.


Create a Grid with two Columns: one column with a width of * and one with a width of 3*. This will make make your 2nd column 3 times the size of the first column, or 3/4 of the total size

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

</Grid>

As an alternative you don't want to use a Grid, I usually use a MathConverter which allows me to adjust a bound value by a mathematical formula. The code for the MathConverter can be found here

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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号