C# WPF XAML 如何在另一个类中修改Frame的Content内容
问题根因
你在页面按钮点击事件中通过new MainWindow()创建了全新的主窗口实例,这个实例并未在界面上渲染显示,你后续调用JoinNextPage操作的是这个不可见窗口内的Frame控件,所以当前你能看到的主窗口没有任何变化,也不会抛出异常。
解决方案
直接获取当前页面所属的、已经在运行的主窗口实例进行操作即可,修改页面的按钮点击事件代码:
private void bttn_start(object sender, RoutedEventArgs e) { // 获取当前页面所在的已打开主窗口实例 if (Window.GetWindow(this) is MainWindow mw) { mw.JoinNextPage(); } }
补充说明
- 上述代码添加了类型校验,避免页面被嵌套到其他类型窗口时出现空引用异常
- 若项目是多窗口嵌套的复杂场景,也可以通过全局事件、依赖注入共享主窗口实例的方式实现相同效果,上述方案为最轻量化的实现方式。
内容的提问来源于stack exchange,提问作者Schecher_1
相关产品推荐
相关产品推荐

