Windows Phone 8 の開発は初めてです。アプリケーションでレイアウトのようなカレンダーを作成しようとしています。そのために、以下のxamlのようにピボットコントロールを使用しました
<phone:Pivot x:Name="Piv" ItemsSource="{Binding Months}" Grid.Row="1" Margin="0,-10,0,0">
<phone:Pivot.HeaderTemplate>
<DataTemplate>
<TextBlock Margin="0,0,0,0" Text="{Binding Name}" Height="70" FontSize="50"/>
</DataTemplate>
</phone:Pivot.HeaderTemplate>
<phone:Pivot.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,-20,0,0">
<Grid Margin="0,0,0,0" >
<!-- Header items goes here -->
</Grid>
<ItemsControl x:Name="CalendarControl" ItemsSource="{Binding Days}" ItemTemplate="{StaticResource HorizontalPivotTemplate}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid x:Name="CalGrid">
<!--Colums and rows for layout goes here-->
</Grid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</StackPanel>
</DataTemplate>
</phone:Pivot.ItemTemplate>
</phone:Pivot>
Itemcontrol の場合、以下に示すように、ページ リソースとして定義された 2 つの DataTemplates があります。
<phone:PhoneApplicationPage.Resources>
<DataTemplate x:Key="VerticalPivotTemplate">
<Grid MinWidth="65" local:ItemsGridLayout.GridRow="{Binding Week}"
local:ItemsGridLayout.GridColumn="{Binding WeekDay}">
<Border BorderThickness="1" BorderBrush="White" >
<Grid Height="76">
<TextBlock VerticalAlignment="Top" HorizontalAlignment="Left" Text="{Binding Day}" Style="{StaticResource PhoneTextLargeStyle}"/>
<TextBlock VerticalAlignment="Bottom" HorizontalAlignment="Right" Text="{Binding DayMalayalam}" FontSize="16"/>
</Grid>
</Border>
</Grid>
</DataTemplate>
<DataTemplate x:Key="HorizontalPivotTemplate">
<Grid MinWidth="65" local:ItemsGridLayout.GridRow="{Binding Week}"
local:ItemsGridLayout.GridColumn="{Binding WeekDay}">
<Border BorderThickness="1" BorderBrush="White" >
<Grid Height="56">
<TextBlock VerticalAlignment="Top" HorizontalAlignment="Left" Text="{Binding Day}" Style="{StaticResource PhoneTextLargeStyle}"/>
<TextBlock VerticalAlignment="Bottom" HorizontalAlignment="Right" Text="{Binding DayMalayalam}" FontSize="16"/>
</Grid>
</Border>
</Grid>
</DataTemplate>
</phone:PhoneApplicationPage.Resources>
今、私の要件は、これらのテンプレートから選択し、電話の向きが変わったときに ItemControl の ItemTemplate に割り当てることです。そのために、電話アプリケーション ページの OrientationChanged イベントを使用しました。
private void PhoneApplicationPage_OrientationChanged_1(object sender, OrientationChangedEventArgs e)
{
if (e.Orientation == PageOrientation.PortraitDown || e.Orientation == PageOrientation.PortraitUp)
{
//Assign VerticalPivotTemplate as CalendarControl's ItemTemplate
}
else
{
//Assign HorizontalPivotTemplate as CalendarControl's ItemTemplate
}
}
私の要件を達成するためにイベントに何を書くべきかわかりません。ここで CalendarControl ItemControl にアクセスできません。誰か助けてください