#windows-phone-7 #windows-phone-7.1
#windows-phone-7 #windows-phone-7.1
Вопрос:
Я знаю, что элемент управления сводкой в Windows Phone состоит из двух частей: сводных заголовков и элемента управления сводными элементами.
я хочу отобразить сводные заголовки под элементом управления сводным элементом (или сводными нижними колонтитулами).
Но я обнаружил, что эта вещь недоступна в pivot control.
Есть ли какой-либо другой способ отображения вкладок в нижнем колонтитуле приложения wp7.
спасибо и с уважением
Ответ №1:
Вы можете создать свой собственный стиль для элемента управления Pivot. Самый простой способ переместить верхний колонтитул вниз — создать копию стиля сводки по умолчанию и слегка изменить его.
<Style x:Key="PivotStyle" TargetType="controls:Pivot">
<Setter Property="Margin" Value="0"/>
<Setter Property="Padding" Value="0"/>
<Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<Grid/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="controls:Pivot">
<Grid HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Background="{TemplateBinding Background}" CacheMode="BitmapCache" Grid.RowSpan="3"/>
<ContentPresenter ContentTemplate="{TemplateBinding TitleTemplate}" Content="{TemplateBinding Title}" Margin="24,17,0,-7"/>
<ItemsPresenter x:Name="PivotItemPresenter" Margin="{TemplateBinding Padding}" Grid.Row="1"/>
<controlsPrimitives:PivotHeadersControl x:Name="HeadersListElement" Grid.Row="2"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<controls:Pivot Title="pivot" Style="{StaticResource PivotStyle}">
Ответ №2:
У меня есть решение. Вам необходимо наследовать от Pivot
элемента управления и переключать строку заголовков на строку элементов:
public class PivotFooter : Pivot
{
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
var headers = base.GetTemplateChild("HeadersListElement") as PivotHeadersControl;
var items = base.GetTemplateChild("PivotItemPresenter") as ItemsPresenter;
var grid = headers.Parent as Grid;
if(grid != null)
{
var firstHeight = grid.RowDefinitions[1].Height;
var secondHeight = grid.RowDefinitions[2].Height;
grid.RowDefinitions[1].Height = secondHeight;
grid.RowDefinitions[2].Height = firstHeight;
}
headers.SetValue(Grid.RowProperty, 2);
items.SetValue(Grid.RowProperty, 1);
}
}