Интерфейс и путаница с переменной доступностью
Я строю свою собственную реализацию интерфейса стиля мастера и пытаюсь заставить его работать правильно, наряду со всеми остальными стилями интерфейса мастера, с которыми я ожидаю столкнуться с той же проблемой. Смотрите изображение:
http://img208.imageshack.us/img208/3857/wizardinwindow.jpg
http://yfrog.com/5swizardinwindowj
В основном я использую сетку, и мои навигационные элементы ниже этого. Сетка будет переключать экраны примерно так:
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, но теперь мои навигационные кнопки ниже, и затем, если я хочу поместить это в код под этими навигационными кнопками, я не могу получить доступ к текстовому полю!
Я также вижу эту проблему, возникающую в большинстве реализаций интерфейса в стиле мастера. Большинство примеров, которые я вижу, используют флажки или переключатели, чтобы не было ошибок при вводе данных. Но это не очень полезно для этого примера.
Итак, каковы мои варианты достижения того, чего я хочу здесь???
Спасибо за просмотр.
1 ответ
Ответом на ваш вопрос может быть начало с более канонического подхода. WPF поддерживает красивый API навигации, который вы можете использовать для создания мастеров. Вот образец этого на работе.
Что касается проверки, в API навигации вы можете использовать класс Page вместо ваших элементов управления (из вашего примера). Ваш класс Page может иметь свойство, указывающее, является ли он действительным или недействительным, и вы можете сохранять логику поля путем проверки входных данных поля, специфичных для данной страницы.