1

オブジェクト (クラス) を 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;
    }
4

0 に答える 0