2012-05-04 3 views
1

피벗 항목을 제거하려면 이렇게해야합니다. nameOfThePivot.Items.remove (nameOfthePivotItem).WP7 피벗 항목 안에 컨트롤이있는 경우 피벗 항목을 제거하는 방법

그러나 나는 내 피벗 항목을 변경 :

<controls:PivotItem x:Name="DistributionPivot" > 
     <controls:PivotItem.Header> 
      <TextBlock Text="distribution" /> 
     </controls:PivotItem.Header> 

지금은이 항목을 제거하는 것은 불가능 : 나는 오류를 가지고 : 경우 ArgumentException이

처리되지 않은 것입니다 그것은 분명히 알려진 버그 ,하지만 그것을 해결하는 방법을 찾을 수 없습니다. pivotItem을 숨기는 또 다른 아이디어가 있습니까?

감사합니다

+0

귀하의'AgumentException'은 무엇을 알려줍니까? –

+0

어디서 Pivot.Items.Remove 메서드를 호출하고 있습니까? 특정 피벗 아이템에있는 컨트롤과 연관된 이벤트 핸들러 중 하나에서 호출하는 경우 얻는 예외를받을 가능성이 큽니다. 다른 피벗 항목에서 피벗 항목 하나를 제거하려고하면이 기능이 작동합니다. –

답변

0

이 작업을 수행하는 두 가지 방법이 있습니다 : 바운드 컬렉션으로 항목을 가지고 기본 모음을 업데이트하거나 코드의 항목을 생성하고 추가하고 제거 중 하나가.

XAML에서 만든 항목을 제거 할 수 없습니다.

0

XAML에서 만든 PivotItem을 사용하여이 작업을 수행합니다. 이러한 확장 메서드를 도우미로 만들었습니다.

public static class PivotFeatureSwitchHelper 
    { 
     public static bool RemovePivotItemIfExistsByHeaderName(this Pivot p, string headerKey) 
     { 
      var item = FindPivotItemWithHeaderName(p, headerKey); 
      return item != null && p.Items.Remove(item); 
     } 


     public static PivotItem FindPivotItemWithHeaderName(this Pivot p, string name) 
     { 
      return (PivotItem)p.Items.FirstOrDefault(mem => name.Equals((string)(((PivotItem)mem).Header), StringComparison.OrdinalIgnoreCase)); 
     } 
    } 

편집 :

당신이 (대신 피벗의는 HeaderTemplate의) 각 헤더를 정의 했으므로

, 대신 문자열로 캐스팅의, TextBlock의 캐스팅과 텍스트 속성을 받아야합니다. 사용법이 앱에 더 구체적이기 때문에 비슷한 문제가있는 다른 사용자에게 유용 할 것이므로 예제를 그대로 두겠습니다.

관련 문제