WPF和Silverlight:导航Page中数据的传递
<div class="postcontent"><div id="cnblogs_post_body">对于WPF导航来说,最大的瓶颈在于当前Page类型并没有提供直接的针对Page自己数据传递的属性或者方法,也就是说每一个Page从导航至显示的整个过程Page本身是无从得知的。于是只能通过Frame类型的相关事件。当然本质上都是依靠被一个专门负责导航的类型:NavigationService类型。而NavigationService类型的事件都是针对整个导航的全局状态的,Page类型是无法直接得到这些数据的。(注意Page类型也有NavigationService属性)。而Silverlight中变克服了上述WPF有的重大缺点,
Page类型(在System.Windows.Controls.Navigation.dll程序集中)有直接的导航事件成员方法,而在WPF中,这些东西只能通过全局的NavigationService来完成:
(Silverlight中Page类型的方法列表)
http://images.cnblogs.com/cnblogs_com/mgen/201206/20120608134756897.png
不过虽然Silverlight中的Page提供导航事件方法,但是悲剧的是NavigationEventArgs类型中没有了ExtraData属性,当然相应的NavigationService中的Navigate方法也不没有传入额外数据的重载,因此Silverlight中还是推荐使用QueryString的方式,详情参见这篇文章:
WPF和Silverlight:FragmentNavigation、NavigationContext和QueryString
下面就主要讲WPF中导航数据的传输,部分也是适用于Silverlight中。(当然Silverlight还是推荐用QueryString的方式)。
<div class="mgen_content"> 目录
[*]使用Navigate方法中的ExtraData和全局变量
[*]使用Navigate(object)和修改的Page类型
[*]使用Frame.Tag和Visual Tree
[*]手动处理Uri?或者FragmentNavigation?
页:
[1]