实现原理:
借助Frame或NavigationService实例的LoadCompleted事件,将参数传递给目标页面对象。
实现步骤
步骤1:
声明一个页面基类接口,所有新建页面都继承此接口
////// 页面基类 /// public interface IBasePage { ////// 传递参数 /// /// 任意类型参数 void SetExtraData(object ExtraData); }
步骤2:
页面继承基类接口
////// Page1.xaml 的交互逻辑 /// public partial class Page1:Page, IBasePage { public Page1() { InitializeComponent(); } public void SetExtraData(object ExtraData) { if (ExtraData != null) { MessageBox.Show($"接受到参数:{ExtraData}"); } } }
步骤3:
在Frame或NavigationService实例的LoadCompleted事件将参数传递给页面对象。
假设你整个WPF程序就一个窗体,所有界面都通过Frame控件完成导航。
下面的代码写在主窗体中。
////// 页面框架导航完成后 /// /// /// private void Frame_LoadCompleted(object sender, NavigationEventArgs e) { var page = e.Content as IBasePage; page.SetExtraData(e.ExtraData); }
参数传递方式
frame.Navigate(new Uri("Page1.xaml",UriKind.Relative), extraData);
以上。



