Управление полями автоматически сгенерированного презентатора контента в Windows Phone Panorama Control

#silverlight #windows-phone-7 #layout #panorama-control

#silverlight #windows-phone-7 #макет #панорама-управление

Вопрос:

Я создаю приложение MVVM Panorama для Windows Phone 7.

В какой-то момент компоновки элемента панорамы я получаю нижнее поле заголовка панорамы, которое перемещает мой контент слишком далеко вниз. Есть ли способ установить нижнее поле для ContentPresenter , которое создается для удержания элементов управления, определенных в Panorama.HeaderTemplate ?

Вот мой список макетов в Silverlight Spy: проблема с полями

На случай, если снимок экрана не читается, вот увеличенная версия:http://bit.ly/rBvNp8

Что-то генерирует нижнее поле в 26 пунктов для поля заголовка (возможно, код элемента управления, который обрабатывает макет). Как я могу управлять этим значением? Мне нужно, чтобы оно было установлено в 0.

Ответ №1:

Для управления свойствами ContentPresenter необходимо переопределить шаблон по умолчанию (в настройках стиля) для элемента PanoramaItem. В моем конкретном случае это стиль PanoramaItem .

 <Style TargetType="controls:PanoramaItem">
            <Setter Property="CacheMode" Value="BitmapCache"/>
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
            <Setter Property="VerticalContentAlignment" Value="Stretch"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="controls:PanoramaItem">
                        <Grid Background="{TemplateBinding Background}" Margin="12,0,0,0">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="auto"/>
                                <RowDefinition Height="*"/>
                            </Grid.RowDefinitions>
                            <ContentControl x:Name="header" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" FontSize="{StaticResource PhoneFontSizeExtraExtraLarge}" FontFamily="{StaticResource PhoneFontFamilySemiLight}" HorizontalAlignment="Left" Margin="10,-2,0,0">
                                <ContentControl.RenderTransform>
                                    <TranslateTransform x:Name="headerTransform"/>
                                </ContentControl.RenderTransform>
                            </ContentControl>
                            <ContentPresenter Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" Grid.Row="1" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
  

Установка Margin=»10,-2,0,0″ делает свое дело.