В настоящее время я кодирую приложение 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, но я не уверен, почему это так.