В следующем классе кнопка получает ExamTemplate
от отправителя, создает новый Exam
и создает экземпляр страницы CreateExam
с правильным объектом Exam
:
public partial class SelectExamTemplate : Page {
public SelectExamTemplate() {
InitializeComponent();
templateItemsControl.ItemsSource = viewModel.templates;
}
private SelectExamTemplate_ViewModel viewModel = new SelectExamTemplate_ViewModel();
private void SelectTemplateButton_Click(object sender, RoutedEventArgs e) {
ExamTemplate selectedTemplate = (ExamTemplate) ((Button) sender).DataContext;
Exam newExam = new Exam() { Template = selectedTemplate };
NavigationService.Navigate(new CreateExam() { Exam = newExam });
}
}
Тогда есть страница CreateExam
:
public partial class CreateExam : Page {
public CreateExam() {
InitializeComponent();
this.DataContext = this;
}
private void CreateButton_Click(object sender, RoutedEventArgs e) {
// todo: validate more fully
if (!(Exam.Name?.Length > 0)) {
MessageBox.Show("Please enter a name for the exam.");
return;
}
NavigationService.Navigate(new ExamInfo_Home() { Exam = Exam });
}
public Exam Exam { get; set; }
}
Элемент показывает, что новый был создан, с шаблоном, выбранным в первом классе. Однако следующий класс не работает:
public partial class ExamInfo_Home : Page {
public ExamInfo_Home() {
InitializeComponent();
this.DataContext = Exam;
System.Console.WriteLine("Exam:");
System.Console.WriteLine(Exam);
}
public Exam Exam { get; set; }
}
Установка точки останова в конце конструктора показывает, что Exam
равно нулю. (Я также пытался переименовать одно из Exam
свойств на случай, если Exam = Exam
что-то сбивало с толку, но это не сработало, плюс наведение указателя мыши на каждое из них показало, что компилятор (или кто-либо другой) точно знает, что означает каждое слово относится к (правильно).
Насколько я могу судить, я использую ту же самую точную технику для передачи Exam
от выбора к созданию при передаче его от создания к информации.
Почему не работает?