#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″ делает свое дело.