You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UWP C# 跨页面发送自定义事件实现支付成功记录功能问题求助

代码失效的核心原因

  1. 事件订阅的对象不匹配:你在Page2的Initialization方法里手动new Page1()创建的是全新的Page1实例,和用户实际输入金额、点击按钮的Page1不是同一个对象,你订阅的是新实例的事件,原页面触发事件自然不会触发Page2的对应方法。
  2. 订阅逻辑未执行:Initialization方法你没有主动调用过,就算订阅对象是对的,整个订阅逻辑也根本没有运行。
  3. 页面生命周期适配问题:UWP默认每次导航到新Page都会创建新实例,就算本次订阅成功,下次打开Page2时之前的订阅也会失效,而且支付记录需要可持久存储,不能依赖临时的事件触发。

最简可行方案(适合新手,改动量小)

直接用App类作为全局共享载体存储支付记录,所有页面都可直接读写:

1. 修改App.xaml.cs,新增全局支付记录存储

sealed partial class App : Application
{
    // 全局支付记录列表,所有页面均可访问
    public static List<string> PaymentRecords { get; set; } = new List<string>();

    // 原有代码无需修改
}

2. 修改Page1的按钮点击逻辑,支付成功后写入记录

private void Button_Click(object sender, RoutedEventArgs e)
{
    // 保留你原有支付成功判断逻辑
    if (/* 支付成功条件 */)
    {
        // 把支付信息写入全局记录,可自定义格式
        App.PaymentRecords.Add($"支付成功:{Money.Text}元 | 时间:{DateTime.Now:yyyy-MM-dd HH:mm}");
    }
    this.Frame.Navigate(typeof(MainBankPage)); 
}

3. 修改Page2,每次打开页面时自动加载所有记录

public sealed partial class Page2 : Page
{
    public Page2()
    {
        this.InitializeComponent();
    }

    // 页面每次被导航到时触发,刷新支付记录
    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        // 清空原有内容避免重复加载
        RootLayout.Children.Clear();
        // 遍历所有全局记录生成文本块
        foreach (var record in App.PaymentRecords)
        {
            var textblock = new TextBlock();
            textblock.Margin = new Thickness(0, 20, 15, 0);
            textblock.Width = 400;
            textblock.Height = 60;
            textblock.FontSize = 20;
            textblock.HorizontalAlignment = HorizontalAlignment.Left;
            textblock.Text = record;
            RootLayout.Children.Add(textblock);
        }
    }
}

后续优化方向

如果项目复杂度持续提升,可逐步改用更规范的实现:

  • 引入MVVM模式,用全局ViewModel统一管理所有业务数据,比存放在App类中更易维护
  • 使用事件聚合器(例如MVVM Toolkit自带的WeakReferenceMessenger)实现跨页面弱引用消息通知,避免强引用导致的内存泄漏
  • 把支付记录持久化存储到本地Sqlite数据库或应用设置中,重启应用后记录依然存在

内容的提问来源于stack exchange,提问作者wpsimon09

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:15:02