簡體   English   中英

更改放置在Windows Phone 8數據透視控件的DataTemplate中的ItemControl的ItemTemplate

[英]Changing ItemTemplate of ItemControl placed inside DataTemplate of pivot control in windows phone 8

我是Windows Phone 8開發的新手。 我正在嘗試在應用程序中創建一個類似於布局的日歷。 為此,我在下面的xaml中使用了Pivot控件

<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,我有兩個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。 請有人幫我

我不禁注意到,您只是在DataTemplate中更改網格寬度,為什么不使用觸發器來執行此操作而不是更改整個模板。

        <Grid.Style>
            <Style TargetType="Grid">
                <Setter Property="Width" Value="56"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Orientation, RelativeSource={RelativeSource AncestorType={x:Type phone:PhoneApplicationPage}}}" Value="PortraitDown">
                        <Setter Property="Width" Value="76"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Grid.Style>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM