アプリの特定のページが墓石から復元されないという問題が発生しました。アプリにアクセスしようとすると、ホーム画面に戻されます。
デバッグ中に3行がコンソールに記録されました。
- タイプの最初のチャンスの例外が
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."
私はそのページのcsコードでいくつかJObjects
を使用しています。JTokens
私は特にリストボックスのバインディング値をそれらからの値に設定しています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
}
墓石を作って生き残るために、私が違ったやり方でやるべきことはありますか?