Windows Phone 7.1 アプリケーションに奇妙な例外があることに気付き、本当に頭がおかしくなりました。
これらは事実です...
次の 2 つの単純な内部Pivot
を持つ単純なアイテムの定義を開始します。PivotItem
<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>
そして、これは私の分離コードです...
編集: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
明らかに、名前空間の宣言を求めています。これは:
xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls"
Microsoft.Phone.Controls.dll
これは、バージョン2.0.50727のアセンブリを指します。
私の問題はバインディングに関連しています(問題を調査して発見したため):
Header="{Binding Path=Text2, Mode=OneWay}"
Header
のプロパティにリンクされたバインディングを使用しない場合PivotItem
、すべてが正常に機能します。それ以外の場合、アプリは例外をスローし、完全にサイレントになり、どのような場合でも表示されません (例外は出力ウィンドウ):
A first chance exception of type 'System.Exception' occurred in System.Windows.dll
プロパティを手動で割り当てた場合Header
、例外はスローされません。
この例外を完全に削除したいのは、Header プロパティへのバインドがたくさんあるためです。MVVM を壊したくありません。また、非常に面倒です。
管理されていない例外を見るのは本当に嫌いです...
誰もこの問題について知っていますか?
解決策/回避策はありますか?
どんな助けでも大歓迎です...ありがとう!