簡體   English   中英

Windows Phone 8.1掛起

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM