2010-02-01 49 views
1

我正在构建我自己的向导样式界面的实现,并努力使它正常工作,以及每个其他样式的向导界面,我期望遇到同样的问题。见图片:用户界面和变量访问混淆

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

这是我得到的问题

这工作正常对照组之间进行切换。问题是,比如说在屏幕上输入一个日期。我有一些数据验证代码在该文本字段上运行。如果验证失败,则文本框边框变为红色并显示一条消息。但是现在我不知道这个代码可以在哪里。我曾经在usercontrol screenX上的按钮上使用它,但是现在我的导航按钮在下面,然后如果我想将它放在导航按钮下的代码中,我无法访问文本框!

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

那么我有什么选择来实现我想要的?

感谢您的支持。

回答

0

您的问题的答案可能是重新开始更加规范的方法。 WPF支持一个很好的Navigation API,你可以用它来构建向导。它在工作时是Here is a sample

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

+0

我似乎没有任何可以添加到解决方案的NavigationWindow。我有页面功能(WPF),但无法找到导航窗口? – baron 2010-02-01 04:23:15