Ошибки навигации между MainWindows и страницами (Приложение WPF) - PullRequest
0 голосов
/ 06 октября 2019

В настоящее время я кодирую приложение wpf, которое позволяет пользователям сначала выбрать процесс, запущенный в настоящее время в локальной системе, после нажатия на кнопку то, что выбранное пользователем будет передано в переменную, и на следующие несколько страниц, гдеони должны будут ответить и ввести информацию в текстовые поля, которые также должны быть сохранены в переменных.

Мне нужно хранить всю эту информацию для доступа на моей последней скомпилированной странице, где я буду отображать всю эту информацию в текстовом поле. Однако я столкнулся с несколькими исключениями при попытке навигации по этим страницам / окнам.

Mainwindow.xaml.cs (Window)

private void startTroubleshootButton_Clicknew(object sender, RoutedEventArgs e)
        {

            //get the selected process at column/index 0 and store it in a variable,
            var selectedProcess = listViewProcesses.SelectedItems[0] as myProcess;
            //var selectedProcess1 = listViewProcesses.SelectedItems[2] as myProcess;
            if (selectedProcess == null)
            {
                MessageBox.Show("no selection made");
                return;
            }

            //Store the associated process name and PID in proc1 and proc2 variable
            proc1 = selectedProcess.processName;
            proc2 = selectedProcess.processId;


            MessageBox.Show($"you have selected the {proc1} application {proc2} ");

            //instantiate the Pageone page

            Q1 pg1 = new Q1();
            this.Content = pg1;
        }

(Q1.xaml.xs (Страница)) Ошибка при получении после нажатия compileButtonClick

private void compileButtonClick(object sender, RoutedEventArgs e)
        {
            var window = (MainWindow)Application.Current.MainWindow;
            string procName = window.proc1;
            int subprocPid = window.proc2;
            string procPID = subprocPid.ToString();
            MessageBox.Show(procName + procPID);

            Compiledpage pg = new Compiledpage(); //this may not be required/efficient

            //Show Pageone in the current window
            this.Content = pg;

        }
System.InvalidOperationException: 'Page can have only Window or Frame as parent.'

(Q1.xaml.xs (Страница)) Ошибка получена после нажатия homeButtonClick

    private void homeButtonClick(object sender, RoutedEventArgs e)
    {
        MainWindow main = new MainWindow();
        this.Content = main;

    }
System.InvalidOperationException: 'Window must be the root of the tree. Cannot add Window as a child of Visual.'

compiledpage.xaml.cs

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

        private string remoteIp;

        public void Window_Loaded(object sender, RoutedEventArgs e)
        {



            //instantiate the MainWindow and assign it to the 'window' variable

            var window = (MainWindow)Application.Current.MainWindow;
            string procName = window.proc1;
            int subprocPid = window.proc2;
            string procPID = subprocPid.ToString();
            //MessageBox.Show(procPID);

           ...

Есть ли лучший способя могу код для этого подхода "навигации и хранения значений через окна / страницы"? Я слышал, что лучше использовать UserControl, но я не уверен, почему это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...