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

WPF中点击Frame内按钮时如何在同Frame中打开新页面?

WPF Frame内页面导航实现方案

要实现点击SubPnlWelcomeTabs页面中的btnPurchaseRequistions按钮,在同一个frame_SM中打开SubPnlPRTabs页面,可通过以下方式实现:

核心实现思路

由于你已经将frame_SM的x:FieldModifier设置为public,可以直接在子页面中获取父窗口实例,进而调用Frame的导航方法。

修改SubPnlWelcomeTabs页面代码

更新按钮点击事件的逻辑,获取父窗口PnlTabs_SM的实例,然后通过它访问frame_SM进行导航:

public partial class SubPnlWelcomeTabs : Page
{
    public SubPnlWelcomeTabs()
    {
        InitializeComponent();
    }

    private void btnPurchaseRequistions_Click(object sender, RoutedEventArgs e)
    {
        // 获取父窗口实例
        var parentWindow = Window.GetWindow(this) as PnlTabs_SM;
        if (parentWindow != null)
        {
            // 在同一个frame_SM中导航到目标页面(直接实例化页面对象)
            parentWindow.frame_SM.NavigationService.Navigate(new SubPnlPRTabs());
            // 也可以使用相对Uri方式导航,二选一即可:
            // parentWindow.frame_SM.NavigationService.Navigate(new Uri("SubPnlPRTabs.xaml", UriKind.Relative));
        }
    }
}

补充说明

  • 两种导航方式效果一致,可根据习惯选择:直接实例化页面对象,或者通过页面的相对Uri导航。
  • 添加parentWindow != null的空判断,是为了避免页面不在目标窗口中时出现空引用异常,提升代码健壮性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 08:33:26