Интерфейс и путаница с переменной доступностью

Я строю свою собственную реализацию интерфейса стиля мастера и пытаюсь заставить его работать правильно, наряду со всеми остальными стилями интерфейса мастера, с которыми я ожидаю столкнуться с той же проблемой. Смотрите изображение:

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 может иметь свойство, указывающее, является ли он действительным или недействительным, и вы можете сохранять логику поля путем проверки входных данных поля, специфичных для данной страницы.

Другие вопросы по тегам