尝试从Windows Phone后面的代码中删除数据透视表项(带标题模板)时抛出异常

时间:2014-06-09 09:15:53

标签: c# windows-phone-8 pivotitem

在我的应用中,我需要动态添加和删除枢轴项。我成功实现了它。但是后来当我尝试更改数据透视表项目标题模板时,相同的代码会抛出异常。

xaml代码如下

 <phone:Pivot x:Name="HeadPivot" Title="SDPOnDemand">
        <phone:PivotItem x:Name="RequestsPI">
            <phone:PivotItem.Header>
                <Grid>
                    <TextBlock Text="Requests" FontSize="{StaticResource PhoneFontSizeExtraLarge}" />
                </Grid>
            </phone:PivotItem.Header>
        </phone:PivotItem>

        <phone:PivotItem x:Name="FiltersPI">
            <phone:PivotItem.Header>
                <Grid>
                    <TextBlock Text="Filters" FontSize="{StaticResource PhoneFontSizeExtraLarge}" />
                </Grid>
            </phone:PivotItem.Header>

        </phone:PivotItem>

        <phone:PivotItem x:Name="SearchPI">
            <phone:PivotItem.Header>
                <Grid>
                    <TextBlock Text="Search Items" FontSize="{StaticResource PhoneFontSizeExtraLarge}" />
                </Grid>
            </phone:PivotItem.Header>

        </phone:PivotItem>


    </phone:Pivot>

我使用以下代码删除并添加数据透视项

HeadPivot.Items.Remove(FiltersPI);
HeadPivot.Items.Add(SearchPI);

第一行抛出以下异常

-       $exception  {System.ArgumentException: Value does not fall within the expected range.

如果我删除标题模板,它的工作正常。我可以知道我做错了吗?

这不能做到吗?

感谢。

1 个答案:

答案 0 :(得分:1)

我想默认的HeaderTemplate不期望Header中的UI元素。

更改标头外观的方法是通过更改Pivot本身的HeaderTemplate属性,然后将适当的对象(很可能是一个简单的字符串)分配给PivotItem的Header属性。像这样:

    <phone:Pivot x:Name="HeadPivot" Title="SDPOnDemand">
        <phone:Pivot.HeaderTemplate>
            <DataTemplate>
                <Grid>
                    <TextBlock Text="{Binding}" FontSize="{StaticResource PhoneFontSizeExtraLarge}" />
                </Grid>
            </DataTemplate>
        </phone:Pivot.HeaderTemplate>

        <phone:PivotItem x:Name="RequestsPI" Header="Requests">
        </phone:PivotItem>

        <phone:PivotItem x:Name="FiltersPI" Header="Filters">
        </phone:PivotItem>

        <phone:PivotItem x:Name="SearchPI" Header="Search Items">
        </phone:PivotItem>
    </phone:Pivot>