C#学习教程:C#中页面之间传递复杂对象以下代码在单击项目时将数据传递到页面,因此它将sectorId传递到测验页面。privatevoidquizbtn_Click(objectsender,RoutedEventArgse){varsectorId="Items1";this.Frame.Navigate(typeof(Quiz),sectorId);}Quiz页面在页面加载函数中接收传入的参数sectorId,其中ObjectnavigationParameter为传入的sectorId。protectedoverridevoidLoadState(ObjectnavigationParameter,DictionarypageState){}我想让对象通过,即sectorId更复杂,所以它不只是包含文本字符串“Items1”,而是包含文本字符串和索引,以及表示总(int)值。我怎样才能传递这个复杂的对象并将其加载到页面上?Frame.Navigate方法将一个对象作为参数,实际上并不关心它是什么类型的对象。您可以创建任何类型的对象并将其作为第二个参数传递。publicstructQuizArgs{publicstring问题;公共字符串[]答案;公共intCorrectIndex;公共日期时间时间戳;}privatevoidquizbtn_Click(objectSender,RoutedEventArgse){varargs=newQuizArgs{Question=“什么颜色?”,Answers=newstring[]{"Red","Green","Blue","Silver"},CorrectIndex=2,Timestamp=DateTime.Now};this.Frame.Navigate(typeof(Quiz),args);在你的Quiz类中:QuizArgsargs=navigationParameterasQuizArgs;if(args==null)thrownewArgumentException(string.Format("不正确的类型'{0}'",navigationParameter.GetType().Name),"navigationParameter");//在此处对“args”数据执行一些操作}在页面之间传递数据这通常使用查询字符串(GET)或使用表单(POST)来完成。你不能真正在页面之间传递一个复杂的对象,除非你先将它序列化为一个字符串,然后使用前面提到的方法(GET/POST),但由于空间限制,不推荐这样做。但是,您可以使用会话状态和/或应用程序状态来存储复杂对象(只要它们是可序列化的)并跨请求使用它们。以上就是C#学习教程:C#中页面间传递复杂对象分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
