Интерфейс и путаница с переменной доступностью - PullRequest
1 голос
/ 01 февраля 2010

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

В основном я использую сетку и у меня под ней есть элементы навигации. Сетка переключит экраны примерно так:

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 Ответ

0 голосов
/ 01 февраля 2010

Ответ на ваш вопрос может состоять в том, чтобы начать с более канонического подхода. WPF поддерживает красивый API навигации , который вы можете использовать для создания мастеров. Вот пример этого на работе.

Что касается проверки, в API навигации вы можете использовать класс Page вместо ваших элементов управления (из вашего примера). Ваш класс Page может иметь свойство, указывающее, является ли он действительным или недействительным, и вы можете сохранять логику поля путем проверки правильности ввода поля, специфичного для страницы.

...