Я столкнулся с проблемой, когда определенная страница моего приложения не восстанавливалась после захоронения. Попытка получить доступ к приложению просто приведет к тому, что вы вернетесь на главный экран.
Во время отладки в консоль были выведены три строки:
- Первое случайное исключение типа
System.Runtime.Serialization.InvalidDataContractException
произошло вSystem.Runtime.Serialization.dll
- Первое случайное исключение типа
System.Reflection.TargetInvocationException
произошло вmscorlib.dll
- Первое случайное исключение типа
System.Runtime.Serialization.InvalidDataContractException
произошло вSystem.Runtime.Serialization.dll
Затем я проверил e.ExceptionObject.Message.ToString()
и увидел эту ошибку:
"Type 'Newtonsoft.Json.Linq.JToken' cannot be serialized. Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMemberAttribute attribute."
Я использую некоторые JObjects
и JTokens
в коде cs для этой страницы. В частности, я устанавливаю значения привязки в списке на значения из этих JObjects
:
<ListBox x:Name="list" Height="600" HorizontalContentAlignment="Stretch">
<!--SelectionChanged="list_SelectionChanged"-->
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding hline}" FontSize="{StaticResource PhoneFontSizeMedium}" TextWrapping="Wrap" Width="474" />
<TextBlock Text="{Binding body}" Margin="0,0,0,36" FontSize="{StaticResource PhoneFontSizeNormal}" TextWrapping="Wrap" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Затем в коде:
var deserialized = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Mydata>>(messagearray.ToString().Replace("<br/>", "\n"));
list.ItemsSource = deserialized;
Для надгробия я просто делаю это:
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
this.SaveState(e); // <- first line
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
this.RestoreState(); // <- second line
}
Есть ли что-то, что я должен делать по-другому, чтобы быть в состоянии надгробие и выжить?