2012-01-06 1 views
1

У меня есть небольшая проблема с получением состояния свойства видимости холста. Когда я извлекаю состояние страницы, холст всегда отображается, даже если он был свернут, когда он был уничтожен. Я попробовал кучу if else и switch, но не повезло. Как исправить эту ошибку? Заранее благодарим всех, кто хочет помочь!Tombstoning Canvas Видимость Свойство

Вот код:

private const string coachPivotKey = "CoachPivotKey"; 
    private const string isVisibleKey = "IsVisibleKey"; 

    protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e) 
    { 
     this.SaveState(coachPivotKey, coachPivot.SelectedIndex); 
     this.SaveState(isVisibleKey, canvasNotes.Visibility); 
    } 

    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
    { 
     coachPivot.SelectedItem = coachPivot.Items[this.LoadState<int>(coachPivotKey)]; 
     canvasNotes.Visibility = this.LoadState<Visibility>(isVisibleKey); 

     base.OnNavigatedTo(e); 
    } 

LoadState() и SaveState() методы в другом классе. Это я получил от видео, которое я смотрел на tombstoning:

public static void SaveState(this PhoneApplicationPage phoneApplicationPage, string key, object value) 
    { 
     if (phoneApplicationPage.State.ContainsKey(key)) 
     { 
      phoneApplicationPage.State.Remove(key); 
     } 

     phoneApplicationPage.State.Add(key, value); 
    } 

public static T LoadState<T>(this PhoneApplicationPage phoneApplicationPage, string key) 
    { 
     if (phoneApplicationPage.State.ContainsKey(key)) 
     { 
      return (T)phoneApplicationPage.State[key]; 
     } 

     return default(T); 
    } 
+0

Когда вы отлаживаете, это значение для видимости внутри словаря государства? –

+0

Да, оба значения Visible и Collapsed переходят к словарю SaveState() –

+0

Но вы можете видеть их внутри LoadState (то есть были ли они действительно сохранены правильно) –

ответ

1

Вместо сохранения System.Windows.Visibility, сохранить bool, указывающий, отображается ли элемент управления.

this.SaveState(isVisibleKey,coachNotes.Visibility == Visibility.Visible); 


canvasNotes.Visibility = this.LoadState<bool>(isVisibleKey) ? Visibility.Visible : Visibility.Collapsed; 
Смежные вопросы