将页面放在调用者外部的框架内

时间:2018-04-06 14:33:01

标签: c# wpf frame

我正在VisualStudio中尝试一个项目

有一个窗口(带框架),Page1和Page2

我正在调用Page1并从Window中放入一个Frame。然后在Page1中我想单击一个按钮并将Page2放在Frame中,而在Page2中使用Page1中的方法来更新表(即在Page1中)

在这里,我启动窗口并将Page1放在Frame

namespace MyApp
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            Frame.Content = new Page1();
        }
    }
}

这里我启动了我的Page1,更新表并希望将Page2放在框架中

namespace MyApp
{
    public partial class Page1 : Page
    {
        public Page1()
        {
            InitializeComponent();
            // Populates table first time
            updateTable();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            MainWindow.Frame.Content = new Page2();
        }

        private void comboBox1_DropDownClosed(object sender, EventArgs e)
        {
            updateTable();
        }

        public void updateTable()
        {
            updateTable;
        }
    }
}

在这里,我开始使用Page2,并希望从Page1更新表格并返回Page1

namespace MyApp
{
    public partial class Page2: Page
    {
        public Page2()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            ((PageHome)Owner).updateTable();          // Update table from Page1. It gives an error because this is only the way of doing it with windows
            MainWindow.Frame.Content = new Page1();   // Going back
        }
    }
}

似乎没有办法在互联网上做到这一点。至少这个页面具体情况 还尝试继承第2页中的page1但不能继承2个类

2 个答案:

答案 0 :(得分:0)

如果您导航回Page1,则可以使用Content的{​​{1}}属性访问它:

Frame

答案 1 :(得分:0)

感谢您的贡献。

我碰巧不使用这些答案

我能够在第1页找到符合我想要的东西:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        NavigationService.Navigate(new Page2());
    }

所以至少部分问题已经回答了