1

我正在构建自己的向导样式界面实现并努力使其正常工作,以及我希望遇到相同问题的所有其他样式的向导界面。见图片:

基本上我使用的是网格,并且在其下方有我的导航元素。网格将切换屏幕,如下所示:

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;
    }
}

这就是我遇到问题的地方:

在控件之间切换效果很好。问题是,例如在屏幕上说输入日期。我有一些数据验证代码要在该文本字段上运行。如果验证失败,文本框边框变为红色并显示一条消息。但是现在我不知道这段代码可以去哪里。我以前在usercontrol screenX上的按钮上有它,但现在我的导航按钮在下面,然后如果我想把它放在那些导航按钮下的代码上,我无法访问文本字段!

我也看到这个问题出现在大多数向导样式界面的实现中。我看到的大多数示例都使用复选框或单选按钮,因此数据输入没有错误。但这对这个例子没有多大帮助。

那么我有什么选择可以在这里实现我想要的呢???

4

1 回答 1

0

您的问题的答案可能是从更规范的方法重新开始。WPF 支持一个很好的导航 API,您可以使用它来构建向导。这是它在工作中的一个示例

关于验证,在 Navigation API 中,您可以使用 Page 类代替控件(来自您的示例)。您的 Page 类可以具有指示它是有效还是无效的属性,并且您可以保留特定于页面的逐个字段输入验证的逻辑。

于 2010-02-01T03:29:26.763 回答