创建向导一些澄清

时间:2013-12-19 09:46:15

标签: c# wpf xaml wpf-controls

我想用3页创建简单的向导

  1. 第1页只有下一个按钮
  2. 第2页有下一个和上一个
  3. 第3页已完成
  4. 我已经创建了页面并添加了所需的按钮,并且在我调用下一页的事件中,例如在按钮单击的第一页中我添加了以下代码

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        p2 = new Page2();
        NavigationService.Navigate(p2);
    }
    

    在主窗口cs中,我已将继承更改为NavigationWindow而不是Window,而在xaml中也是如此。目前它的工作,但我有3个问题。

    1. 显示的页面是主窗口的一部分,我怎么能避免它,因为当我运行它时,按钮位置不像我放入设计器中?它被改变了。
    2. 当前在Grid中的按钮,我应该将它们放在不同的控件中(按钮位置应该像页面左侧的任何向导一样)?
    3. 如何避开右上方页面中的导航箭头?
    4. 谢谢!

1 个答案:

答案 0 :(得分:2)

反向回答你的任务,

3。如何避开页面右上角的导航箭头?

我有一个开源库http://winchrome.codeplex.com/,可以通过多种方式重新设置导航窗口的样式。例如,这些都是NavigationWindow s

example NavigationWindow s

简而言之,您只需将NavigationWindow设置为仅显示所需的部分。

2.当前在Grid中的按钮,我应该把它们放在不同的控件中(按钮位置应该像页面左边的任何向导一样)?

如果您查看WinChrome中的样式,那么您会看到只是根据需要重新构建UI并提供ContentPresenter来保存您的页面。例如VS2012 style在窗口上应用了很多样式,但避免添加后退和前进按钮。而Win7 style在Win7样式中重建后退和前进。

如果您这样做,则需要一种方法将启用或可见状态传递到页面外的按钮。有关如何在Winforms中执行此操作,请查看http://www.codeproject.com/Articles/8197/Designer-centric-Wizard-control。在WPF中,您可以从Page派生WizardPage来创建包含CanBackCanNextIsFinish属性的{{1}}类,或者可以更改地定义附加属性来执行相同(在我们定义发光颜色的VS2012.cs中有如何执行此操作的示例)

最后

1。显示的页面是主窗口的一部分,我怎么能避免它,因为当我运行它时按钮位置不像我放入设计器?它被改变了。

我需要看一些代码来评论你是如何做到的,但如果你看一下WinChrome中的任何一个演示程序,那么你可以看到我是如何完成它而没有问题的。

祝你好运!