0

Windows Phone 7.1 응용 프로그램에서 이상한 예외가 발생하여 정말 미쳤습니다. PivotItem 헤더를 바인딩 할 때 자동 예외가 발생합니다.

내가 내 두 가지 간단한 PivotItem있는 간단한 Pivot 항목을 정의를 시작

... 사실은 다음과 같습니다

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
    <controls:Pivot> 
     <controls:PivotItem x:Name="PivotItem1" 
          Header="Test1" /> 
     <controls:PivotItem x:Name="PivotItem2" 
          Header="{Binding Path=Text2, Mode=OneWay}" /> 
    </controls:Pivot> 
    <Button Content="Test" Click="Button_Click" /> 
</Grid> 

그리고 이것은 내 코드 숨김 ...

EDIT입니다 : Gambit이 나를 제안 했으므로 더 많은 코드를 보여 드리겠습니다. 실제 상황에서

, 다음 내보기입니다 나는 MVVM이 있습니까하지만,이 경우에 나는이 테스트는 쉬운 방법으로 문제를 재현 할 수있는 상황 ...

을 단순화 :

public partial class MainPage : PhoneApplicationPage, INotifyPropertyChanged 
{ 
    private string _text2 = "<Missing>"; 

    public string Text2 
    { 
     get 
     { 
      return _text2; 
     } 
     private set 
     { 
      _text2 = value; 

      NotifyPropertyChanged("Text2"); 
     } 
    } 


    public MainPage() 
    { 
     InitializeComponent(); 
    } 

    private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     this.DataContext = this; 
    } 


    public event PropertyChangedEventHandler PropertyChanged; 

    public void NotifyPropertyChanged(string propertyName) 
    { 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
    } 


    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     this.Text2 = "Second page"; 
    } 
} 

그래서, 그것은 NULL 값의 단지 파라미터 초기화하지 : 당신이 예외를 볼 수 있습니다.

분명히 controls 네임 스페이스 선언을 요청하고 있습니다. 이다 :

이 어셈블리 Microsoft.Phone.Controls.dll을 의미
xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls" 

버전 2.0.50727.

내 문제는 바인딩 (나는이 문제를 조사하고 발견으로) 관련이있다 :

Header="{Binding Path=Text2, Mode=OneWay}" 

당신이 PivotItemHeader 속성에 연결 바인딩을 사용하지 않으면, 모든 것이 잘 작동, 그렇지 않으면 ... ,

A first chance exception of type 'System.Exception' occurred in System.Windows.dll 

수동으로 Header 속성을 할당하는 경우 : 응용 프로그램은 완전히 침묵 예외가 발생합니다, 그것은 (만 출력 창에 예외를 볼 수 있습니다) 어떤 경우에 표시되지 않습니다 예외는 발생하지 않습니다.

머리글 속성에 바인딩이 많기 때문에이 예외를 완전히 제거하고 싶습니다. 내 MVVM을 깨뜨리고 싶지 않습니다 ... 또한 매우 귀찮습니다!

정말 관리되지 않는 예외를보고 싶지

...

사람은이 문제에 대해 알고 있나요?

모든 해결책/해결 방법은 무엇입니까?

도움이 될 것입니다 ... 감사합니다!

+0

코드를 사용할 때 예외가 없습니다. 이 문제를 일으킬만한 것이 있습니까? –

+0

@MilanAggarwal 출력 창도 아니십니까? – MAXE

+0

아니, 전혀 예외 없음 –

답변

0

제공된 코드를 기반으로 DataContext가 설정되지 않은 것으로 의심됩니다. 귀하의 예제에서, DataContext는 PhoneApplicationPage_Loaded 이벤트에서 설정됩니다. 그러나이 이벤트를 어디에서나 등록하는 것으로는 보이지 않습니다.MainPage 생성자에서 다음과 같은 행을 추가하십시오.

this.Loaded += new RoutedEventHandler(PhoneApplicationPage_Loaded); 
+0

도움을 주셔서 감사합니다. 나는 너에게 대답하기 위해 나의 질문을 편집했다. – MAXE

+0

추가 코드를 기반으로 답변을 수정했습니다. – Gambit

+0

이벤트 등록은 XAML에 올바르게 정의되어 있습니다.이 샘플은 작동하며 바인딩도 작동합니다. Loaded 이벤트 전에 DataContext를 어떻게 바인딩 할 수 있습니까? 보기 생성자를 제외하고 ...하지만 DataContext를 설정하지 않는 것이 좋습니다! 다시 한 번 감사드립니다! – MAXE

관련 문제