以编程方式触发事件并将值传递给第二页?

Trigger event programmatically and pass value to second page?

我想将一个值从 Mainpage 传递到 Page2。当我点击 Button_Click 时,变量“t”被传递给 Page2。

但是我需要从代码中触发 Button_Click 事件,但随后抛出“NullReferenceException”。

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
        Button_Click(new object(), new RoutedEventArgs());
    }

    public void Button_Click(object sender, RoutedEventArgs e)
    {
        string t = "Test";
        navigate_page2(t);
    }

    public void navigate_page2(string t)
    {
        this.Frame.Navigate(typeof(Page2), t);
    }
}

Button_Click(new object(), new RoutedEventArgs()); 触发 Button_Click 事件来执行某些操作,调用 "navigate_page2" 时除外。

直接点击按钮和代码触发按钮有什么区别?我想这是 "new RoutedEventArgs" 不知何故,但我不知道如何处理...谢谢您的任何回复!

请不要直接调用Button_Click,此方法与XAML中的事件相关联。

如果想复用Button_Click事件中的代码,可以打包成方法调用。

更新

but then a “NullReferenceException” is thrown.

问题出在this.Frame。对于您当前的页面,this.Frame 不存在。您需要在 xaml.

中创建一个子框架
<Grid>
    <Frame x:Name="MainFrame"/>
</Grid>
public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
        btn_handle();
    }

    public void Button_Click(object sender, RoutedEventArgs e)
    {
        btn_handle();
    }

    public void btn_handle()
    {
        string t = "Test";
        navigate_page2(t);
    }

    public void navigate_page2(string t)
    {
        MainFrame.Navigate(typeof(Page2), t);
    }
}

此致。

据我所知,您正在尝试将一个值从一个页面传递到另一个页面,让我们以两种形式为例,您需要通过单击任何按钮将一个值从一个形式传递到另一个形式。

表格2

public partial class Form2 : Form
{
    public event EventHandler TextEvent;

    public Form2()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        this.Hide();
        if (TextEvent != null)
        {
            TextEvent(label1.Text, null);
        }
    }
}

表格 1

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 obj = new Form2();
        obj.Show();
        obj.TextEvent += obj_TextEvent;
    }

    void obj_TextEvent(object sender, EventArgs e)
    {
        label1.Text = sender.ToString();
    }
}

我正在做的是在 Form2 中创建一个事件,该事件在单击 Form2 的 Button1 时触发,数据作为发送者传递给 Form1,其中 Form2 obj 已启动该事件并将 Form1 的 label1 设置为 label1.Text = sender.ToString();