オブジェクト (クラス) を OnNavigateFrom イベント ハンドラー内のページの状態辞書に保存しようとしていました。アプリが廃棄されているときはいつでも、例外 "System.Windows.ApplicationUnhandledExceptionEventArgs" が発生します。OnNavigateFrom イベント ハンドラーは次のとおりです。
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
if (e.NavigationMode != System.Windows.Navigation.NavigationMode.Back)
{
try
{
if (Utility.TOMBED_CELEB.Length > 0) State["selectedCeleb"] = Utility.SelectedCeleb; //app not tombstoned, save celeb object
else { System.Diagnostics.Debug.WriteLine("Could not find value for Celeb"); }
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.StackTrace);
}
}
}
行をコメントアウトすると
State["selectedCeleb"] = Utility.SelectedCeleb; //app not tombstoned, save celeb object
アプリは例外をスローしません。これは、もちろん文字列オブジェクトを保存するときに発生しません。クラスを状態辞書に保存するにはどうすればよいですか。以下はセレブクラス
class Celebs : INotifyPropertyChanged
{
private BitmapImage _image;
private String ImageString;
public String Image
{
get
{
return ImageString;
}
set
{
this.ImageString = value;
NotifyPropertyChange("Image");
}
}
public BitmapImage ImageBitmap
{
get
{
return _image;
}
set
{
this._image = value;
NotifyPropertyChange("ImageBitmap");
}
}
public String Name{get;set;}
public String Dob { get; set; }
public String Country { get; set; }
public String Aid { get; set; }
public String Biography { get; set; }
public String Twitter { get; set; }
public String Facebook { get; set; }
public String Google { get; set; }
public String Website { get; set; }
public String Youtube { get; set; }
public JArray MovieActedIn { get; set; }
public String Name_ { get; set; }
public String Title { get; set; } //for search sake
public String StarringActors { get; set; } //for search sake
public void NotifyPropertyChange(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (null != handler)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}