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
相关产品推荐
相关产品推荐

