2014-06-09 1 views
0

내 앱에서 피벗 항목을 동적으로 추가 및 제거해야합니다. 성공적으로 구현했습니다. 그러나 나중에 피벗 항목 헤더 템플릿을 변경하려고 시도 할 때 동일한 코드가 예외를 던지고 있습니다.윈도우 뒤의 코드에서 피벗 항목 (헤더 템플릿 포함)을 제거하려고 할 때 예외가 발생합니다.

<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); 

피벗 항목을 제거하고 추가 할 다음 코드를 사용하여 다음과 같이

XAML 코드는

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

헤더 템플릿을 제거하면 정상적으로 작동합니다. 내가 뭐 잘못하고 있는지 알 수 있니?

이 작업을 수행 할 수 없습니까?

감사합니다.

+0

'Header = "Requests"'(등등)이 효과가 없습니까? 내 말은, 템플릿이나 값을 정말로 바꾸고 싶습니까? – yasen

+0

나를 위해 주요 문제는 기본 템플릿을 사용할 때 헤더의 크기입니다. 크기를 줄이고 싶기 때문에 이것을 사용하고 있습니다. – Presse

답변

1

기본 HeaderTemplate은 헤더의 UI 요소를 기대하지 않습니다.

머리글 모양을 변경하는 방법은 Pivot 자체의 HeaderTemplate 속성을 변경 한 다음 PivotItem의 머리글 속성에 적절한 개체 (대개 간단한 문자열)를 할당하는 것입니다. 다음과 같은 것 :

<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> 
+0

지금은 잘 작동합니다. 이것은보고해야 할 버그처럼 보이지만. – Presse

+1

@Presse 내가 보는 유일한 문제는 오류가 문제에 대해 그다지 많은 것을 말해주지 않는다는 것이다. 그렇지 않으면 - 다른 모양의 헤더를 가질 필요가 거의 없기 때문에 템플릿을 한 곳에 모으는 것이 좋습니다. 물론 원하는 경우 ContentPresenter 또는 ContentControl을 템플릿에 넣을 수 있습니다. 그런 다음 질문에서 XAML에서와 마찬가지로 모든 PivotItem에 대해 원하는 UI를 설정할 수 있습니다. :) – yasen

관련 문제