在传递数据时导航到另一个XAML页面的文档化方式似乎是将数据序列化为URL参数。这对于简单的参数的伟大工程,如单个数据库键:将数据传输到另一个XAML页面的最佳方式是什么?
NavigationService.Navigate(new Uri("/ViewContact.xaml?contactid=" + cid, UriKind.Relative));
但是,如果你想在一个相当复杂的数据结构来传递,如搜索查询是什么?这个查询可能包含关键字,各种过滤器,项目数组等等。使用URL参数来表示这类数据将是相当困难的。
问题:推荐的方法是导航到另一个页面,传入非平凡的参数?
一个想法是先设置你导航到数据或查询作为页面的静态属性:
Query q = new Query();
// Set various parameters
ViewContact.SearchQuery = q;
NavigationService.Navigate(new Uri("/ViewContact.xaml?contactid=", UriKind.Relative));
然后,当ViewContact加载,它会检查静态属性和将数据加载到内存中。
这种方法有什么问题,或者是否存在推荐的另一种方法?
这很有趣 - 我会小心地测试应用程序何时被墓碑化并返回,如果参数恢复以及Uri。 – gregstoll
是的。我通常使用这两种机制:如果我需要的数据已经加载到内存中(例如,在View中导航),并且原始Uri参数作为回退(如果数据尚未加载),则这一个机制。 –
'+ 1'为这个想法..但是,看起来有点冒险,我不得不测试以确保它与后退/前进堆栈一起工作。 –