Я строю свою собственную реализацию интерфейса в стиле мастера и изо всех сил пытаюсь заставить его работать правильно, наряду со всеми другими стилями интерфейса мастера, с которыми я ожидаю столкнуться с той же проблемой. Смотрите изображение:
В основном я использую сетку и у меня под ней есть элементы навигации. Сетка переключит экраны примерно так:
private void btnNext_Click(object sender, RoutedEventArgs e)
{
Wizard.Progress++;
SwitchUserControl();
}
private void SwitchUserControl()
{
switch (Wizard.Progress)
{
case 0:
contentGrid.Children.RemoveRange(0, contentGrid.Children.Count);
contentGrid.Children.Add(screen0);
break;
case 1:
contentGrid.Children.RemoveRange(0, contentGrid.Children.Count);
contentGrid.Children.Add(screen1);
break;
case 2:
contentGrid.Children.RemoveRange(0, contentGrid.Children.Count);
contentGrid.Children.Add(screen2);
break;
case 3:
contentGrid.Children.RemoveRange(0, contentGrid.Children.Count);
contentGrid.Children.Add(screen3);
break;
}
}
Вот где я добираюсь до проблемы :
Это прекрасно работает для переключения между элементами управления. Проблема, скажем, например, на одном из экранов говорит, что введите дату. И у меня есть код проверки данных для этого текстового поля. Если проверка не пройдена, граница текстового поля становится красной и появляется сообщение. Но сейчас я не знаю, где этот код может идти. Я имел обыкновение иметь это на кнопке на экране usercontrolX, но теперь мои навигационные кнопки ниже, и затем, если я хочу поместить это в код под этими навигационными кнопками, я не могу получить доступ к текстовому полю!
Я также вижу эту проблему в большинстве реализаций интерфейса в стиле мастера. Большинство примеров, которые я вижу, используют флажки или переключатели, чтобы не было ошибок при вводе данных. Но это не очень помогает этому примеру.
Так, каковы мои варианты достижения того, чего я хочу здесь ???