记录:不同页面传递参数的方法 - 使用delegate机制实现
1.简介
基本上任何软件实现都是要完成不同页面之间参数传递实现的。即A页面的参数传递给B页面,有很多人使用页面构造函数传递参数,实际上不是很实用,如果被调用构造函数的页面还有别的需要初始化的组件,就要撰写不同的构造函数,很容易出错。
2.使用委托机制的传参实现
委托这个机制,很像C++的函数指针,我也是一直这么理解的,所以看到传参可以用委托我是没想到的。函数指针这点以后一定会一篇文章详述下自己的理解。
那么委托使用传参的过程就是发挥了函数指针的特点,比如A页面需要调用B页面,要传递参数,我们可以把参数封装在A的a函数中,然后在B建立委托b,把A的a函数作为B中委托b的实例(即所谓的订阅),这样当B需要调用A的传过来的参数时候,就直接使用委托b即可,这样的好处是,参数只和这个委托关联,便于以后修改和维护。那么上代码
代码的实例是主窗口MainWindows需要接受页面WorkSheetInputPage传递过来的ID参数,然后使用ID。这个过程是使用了委托机制
public partial class WorkSheetInputPage : Page
{
string id = null ;//需要传递的参数
//传递ID的委托
public delegate void PassIDHandler(string id);
public PassIDHandler passIDHandler;
private readId( ) //读取id后传参数回MainWindows
{
id = readIDfromfile();
passIDHandler(id); //调用委托
}
}
//主窗口要写绑定委托的函数,以及完成函数绑定(委托订阅)
public partial class MainWindow : Window
{
WorkPage.WorkSheetInputPage wp_WorkSheetInputPage;
string id = null;
public MainWindow()
{
wp_WorkSheetInputPage = new WorkPage.WorkSheetInputPage();
// wp_WorkSheetInputPage 订阅传递ID委托
wp_WorkSheetInputPage.passIDHandler += getIDFromInputPage;
}
// 订阅委托
public void getIDFromInputPage(string ID)
{
this.id = ID; //这个ID是WorkSheetInputPage传递过来的
// 在下面可以写要使用id的工作代码
}

浙公网安备 33010602011771号