内容控制内容调整以填充Silverlight 4

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内容控制内容调整以填充Silverlight 4相关的知识,希望对你有一定的参考价值。

我有一个ContentControl的样式,我想在我目前有边框的地方使用它。当我使用它时,子控件不会伸展到填充,只占用少量空间。我已经尝试将Horizo​​ntalAlignment =“Stretch”应用于所有内容,但它不起作用。怎么了?

<Style x:Key="GradientPanel" TargetType="ContentControl">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ContentControl">
                <Grid HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
                    <Rectangle RadiusY="10" RadiusX="10" Stroke="Black" StrokeThickness="0">
                        <Rectangle.Effect>
                            <DropShadowEffect Opacity="0.56" ShadowDepth="1" BlurRadius="3" />
                        </Rectangle.Effect>
                        <Rectangle.Fill>
                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                <GradientStop Color="#FFE1EAF3"/>
                                <GradientStop Color="White" Offset="1"/>
                                <GradientStop Color="#FFFAFBFD" Offset="1"/>
                            </LinearGradientBrush>
                        </Rectangle.Fill>
                    </Rectangle>
                    <ContentPresenter Margin="5" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

...

之前(工作正常):

<Border Style="{StaticResource SearchContainerBorder}" >
    <Grid Margin="5">
        <Grid.RowDefinitions>
            <RowDefinition />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <ToggleButton  Style="{StaticResource ToggleButtonExpanderStyle}" Grid.Row="0" Grid.Column="1" Height="25" Width ="25" HorizontalAlignment="Center" VerticalAlignment="Top" />
        <ContentControl Grid.Row="0"  HorizontalContentAlignment="Stretch" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
    </Grid>
</Border>

之后(用ContentControl替换Border):

<ContentControl Style="{StaticResource GradPanel}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
    <Grid Margin="5">
        <Grid.RowDefinitions>
            <RowDefinition />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <ToggleButton  Style="{StaticResource ToggleButtonExpanderStyle}" Grid.Row="0" Grid.Column="1" Height="25" Width ="25" HorizontalAlignment="Center" VerticalAlignment="Top" />
        <ContentControl Grid.Row="0"  HorizontalContentAlignment="Stretch" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
    </Grid>
</ContentControl>
答案

您需要在外部ContentControl上设置HorizontalContentAlignment="Stretch"VerticalContentAlignment="Stretch"设置。

默认行为是不展开容器的内容。

例如第一行应该是:

<ContentControl Style="{StaticResource GradPanel}" 
                HorizontalAlignment="Stretch" 
                VerticalAlignment="Stretch" 
                HorizontalContentAlignment="Stretch" 
                VerticalContentAlignment="Stretch" >

以上是关于内容控制内容调整以填充Silverlight 4的主要内容,如果未能解决你的问题,请参考以下文章

如何让标题自动调整其高度以适应其内容?

WPF的窗口中的所有内容随窗口大小变化而同步变化

#yyds干货盘点# CSS盒子模型

将路径中的填充属性绑定到样式中 ContentControl 中的 Foreground 属性

UIView - 调整大小以适应内容

UIPopoverController 以不同的速度调整弹出框和内容视图控制器(uinavigationcontroller)的大小