ContentControl и его дочерние элементы - одного размера? - PullRequest
0 голосов
/ 28 апреля 2011

Я полагаю, что это довольно простой (читай: очень простой) вопрос, но я использовал довольно много времени, чтобы разобраться с ним.

У меня есть класс PresentationItem, производный от ContentControl.Я работаю в Expression Blend, которая создает проблему с высотой и шириной PresentationItem.

Когда я вставляю PresentationItem, он автоматически устанавливает слишком полную сетку (800x600).Затем, когда я вставляю, например, текстовый блок, размер текстового блока становится небольшим.Я думаю, что это нормальное и ожидаемое поведение.

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

(Кроме того, использование чего-то другого, кроме ContentControl, не является опцией).У меня есть следующий стиль:

 <Style TargetType="local:JSLDPresentationItem">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="local:JSLDPresentationItem">
                <Border Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}">
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="PresentationStates">
                            <VisualStateGroup.Transitions>
                                <VisualTransition GeneratedDuration="0:0:0.3"/>
                            </VisualStateGroup.Transitions>
                            <VisualState x:Name="FocusedPresenting">
                                <Storyboard>
                                    <DoubleAnimation  Duration="0" To="1.2" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleX)" Storyboard.TargetName="LocalLayoutPanel" />
                                    <DoubleAnimation Duration="0" To="1.2" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="LocalLayoutPanel" />
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="AfterPresenting">
                                <Storyboard>
                                    <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="LocalLayoutPanel" />
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="BeforePresenting">
                                <Storyboard>
                                    <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="LocalLayoutPanel" />
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="UnfocusedPresenting"/>
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>

                    <Grid x:Name="LocalLayoutPanel" Margin="0,0,0,0" VerticalAlignment="Top"   >

                        <Grid.RenderTransform>
                            <CompositeTransform/>
                        </Grid.RenderTransform>
                        <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" />
                    </Grid>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Что изменить и где?Я думаю, это какой-то "*" или "авто" в нужном месте!

1 Ответ

1 голос
/ 12 мая 2011

Попробуйте установить HorizontalContentAlignment и VerticalContentAlignment вашего производного элемента управления на Stretch.

...