[英]Windows Phone 8.1 Suspend
我有一個Windows Phone 8.1應用程序-我是Win Phone開發的新手!
它包含各種頁面和自定義UserControls。
我試圖暫停該應用程序以訪問文件系統/相機。
最初,我因為在Frame.Navigate
傳遞復雜的對象而遇到錯誤,但是我通過將復雜的對象添加到SuspensionManager.SessionState["..."]
並在OnNavigatedTo
函數中檢索它來解決了OnNavigatedTo
。
現在,我在應用程序暫停時遇到的錯誤是:
類型'Windows.UI.Xaml.UIElement'無法序列化。 考慮使用DataContractAttribute屬性標記它,並使用DataMemberAttribute屬性標記要序列化的所有成員。 另外,您可以確保類型是公共的,並且具有無參數的構造函數-然后,將對該類型的所有公共成員進行序列化,並且不需要任何屬性。
我嘗試執行建議的操作-將[DataContract]
屬性添加到類中,並將[DataMember]
到所有屬性和字段中。
我仍然遇到相同的錯誤。 除了嘗試上述操作外,Google並沒有提供太多幫助,因此我仔細檢查了每個自定義UserControl並向其中添加了屬性-仍然行不通,所以我也為每個Page添加了屬性-主要是出於絕望。
因此,現在所有內容都應該可序列化,但是我仍然遇到相同的錯誤! 我懷疑它是否有用,但這是堆棧跟蹤:
在System.Runtime.Serialization.DataContract.DataContractCriticalHelper.ThrowInvalidDataContractException(String message,Type type)處System.Runtime.Serialization.DataContract.DataContract.DataContractCriticalHelper.CreateDataContract(Int32 id,RuntimeTypeHandle typeHandle,Type type)在System.Runtime.Serialization.DataContract。 System.Runtime.Serialization.DataContract.GetDataContractSkipValidation(Int32 id,RuntimeTypeHandle typeHandle,類型類型)的DataContractCriticalHelper.GetDataContractSkipValidation(Int32 id,RuntimeTypeHandle typeHandle,類型類型) System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper..ctor(類型類型)在System.Runtime.Serialization.DataContract.DataContractCriticalHelper.CreateDataContract(Int32 id) ,RuntimeTypeHandle typeHandle,Type type)在System.Ru System.Runtime.Serialization.DataContract.GetDataContractSkipValidation(Int32 id,RuntimeTypetractle typeHandle,Type type)在System.RuntimeS。 System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper..ctor(Type type)處於System.Runtime.Serialization.ClassDataContract..ctor(Type type)處於System.Runtime.Serialization.DataContract的RuntimeTypeHandle typeHandle,類型類型,SerializationMode模式)。 DataContractCriticalHelper.CreateDataContract(Int32 id,RuntimeTypeHandle typeHandle,Type type)在System.Runtime.Serialization.DataContract.DataContractCriticalHelper.GetDataContractSkipValidation(Int32 id,RuntimeTypeHandle typeHandle,Type type)在System.Runtime.Serialization.DataContracttGet() typeHandle,Type type)在System.Runtime.Se System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper..ctor(類型類型)在System.Runtime.Serialization.ClassDataContract..ctor(類型類型)處,處於rialization.DataContract.GetDataContract(RuntimeTypeHandle typeHandle,類型類型,SerializationMode模式)。 System.Runtime.Serialization.DataContract.DataContractCriticalHelper.CreateDataContract(Int32 id,RuntimeTypeHandle typeHandle,Type type)在系統化。 System.Runtime.Serialization.DataContract.GetDataContract(Int32 id,RuntimeTypeHandle typeHandle,Type type)在System.Runtime.Serialization.ClassDataContract.ClassDataContractCriticalHelper..ctor(Type type)在System.Runtime.Serialization.DataContract.GetDataContract(RuntimeTypeHandle typeHandle,Type type,SerializationMode mode) System.Runti中的.Runtime.Serialization.ClassDataContract..ctor(Type type) 在System.Runtime的me.Serialization.DataContract.DataContractCriticalHelper.CreateDataContract(Int32 id,RuntimeTypeHandle typeHandle,Type type)在System.Runtime.Serialization.DataContract.DataContractCriticalHelper.GetDataContractSkipValidation(Int32 id,RuntimeTypeHandle typeHandle,Type typeS)在系統化。 System.Runtime.Serialization.DataContract.GetDataContract(Int32 id,RuntimeTypeHandle typeHandle,Type type)在System.Runtime.Serialization.DataContract.CheckAndAdd(Type type,Dictionary
2 typesChecked, Dictionary
type at System.Runtime.Serialization.DataContract.GetDataContract(RuntimeTypeHandle typeHandle,Type type,SerializationMode mode) 2&nameToDataContractTable)在System.Runtime.Serialization.XmlObjectSerializerContext.GetDataContractsForKnownTypes(IList`1knownTypeList)在System.Runtime.Serialization.DataContractSerializer.get_KnownDataContracts()在System.Runtime.Serialization.XmlObjectSownializer。 XmlObjectSeriali System.Runtime.Serialization.XmlObjectSerializerType.System.Runtime.Serialization.XmlObjectSerializerContext。 .XmlObjectSerializerWriteContext.SerializeAndVerifyType(DataContract dataContract,XmlWriterDelegator xmlWriter,Object obj,Boolean verifyKnownType,RuntimeTypeHandleclarifiedTypeHandle,TypeclaredType)在System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithXType System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(XmlWriterDelegator xmlWriter,Object obj,Boolean isDeclaredType,Boole)中的clarifiedTypeHandle,類型declaredType) 一個writeXsiType,的Int32 declaredTypeID,的RuntimeTypeHandle declaredTypeHandle)在WriteKeyValueOfstringanyTypeToXml(XmlWriterDelegator,對象,XmlObjectSerializerWriteContext,ClassDataContract)在System.Runtime.Serialization.ClassDataContract.WriteXmlValue(XmlWriterDelegator的XmlWriter,對象OBJ,XmlObjectSerializerWriteContext上下文)在WriteArrayOfKeyValueOfstringanyTypeToXml(XmlWriterDelegator,對象,XmlObjectSerializerWriteContext,CollectionDataContract )在System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue(DataContract dataContract,XmlWriterRun.Type .XmlObjectSerializerWriteContext.SerializeWithoutXsiType(DataContract dataContract,XmlWriterDelegator xmlWriter,Object obj,RuntimeTypeHandle d System.Runtime.Serialization.DataContractSerializer.InternalWriteObject(XmlWriterDetractr編寫者,對象圖,數據。 System.Runtime.Serialization.XmlObjectSerializer.WriteObject(XmlDictionaryWriter writer,Object graph)的System.Runtime.Serialization.XmlObjectSerializer.WriteObject(Stream Stream.Object.Graphite)上的.WriteObjectHandleExceptions(XmlWriterDelegator writer,Object graph,DataContractResolver dataContractResolver) .SuspensionManager.d__0.MoveNext()
我真的不確定下一步該怎么做? 我歡迎一些建議。
您正在嘗試從UI序列化某些Element。 這幾乎是不可能的,您不應該這樣做。 您需要使出現在UserControl中的所有內容,每個屬性及其類型都可序列化。
您只能將屬性(DataContract或DataMember)添加到自己創建的類中,並且將無法使UI元素可序列化。 可能是,您的UserControl是一個DataContract,但是它仍然具有UIElement類型的某些屬性,這些屬性無法序列化。
答:您應該只存儲您感興趣的值 (如TextBox.Text或ToggleButton.IsActive,...)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.