9

全部在 WPF 中:

开发一个向导应用程序,用户必须在被带到主应用程序之前回答一些简单的问题。然后,主应用程序会预填充从向导中获得的信息。

我从一个窗口开始,然后我计划向其中添加用户控件。主窗口的第一行是用户控件,然后是 Next 和 Previous 按钮来控制在第二行的控件之间移动。这样,我可以轻松控制在屏幕之间切换的逻辑,例如:

WizardControl1.IsVisible = false;
WizardControl2.IsVisible = true;

但由于某种原因,用户控件没有 IsVisible 的设置器。欢呼。

所以我想我会为向导的每个部分使用单独的窗口。这种方法的问题是,现在当在两者之间切换时,窗口会在随机位置打开,并且通过使用下一步的向导步进,下一个窗口会随机弹出,这确实令人分心和令人沮丧。

那么如何正确开发向导呢?我不明白为什么这这么难......不完全是火箭科学......在按下下一个/上一个后替换文本和控件并存储输入!

谢谢

4

6 回答 6

7

检查此链接: http: //www.codeproject.com/KB/WPF/InternationalizedWizard.aspx 这是 Josh Smith 关于在 WPF 中构建向导的文章,这似乎是一个不错的模式。我发现它对我有帮助,希望你也会。

于 2010-01-27T14:23:46.463 回答
4

codeplex 上还有一个开源的Avalon Wizard控件。

于 2011-02-02T22:34:56.057 回答
3

我可能会使用数据绑定和模板选择器来解决这个问题。将向导表单绑定到“WizardData”类,该类公开“WizardPage”基类的列表。

WizardData 类可以公开定义表单上正确信息的属性,并为主页显示一个控件,该控件使用模板选择器根据特定向导页面的实际类型确定要显示的正确控件。

听起来确实比实际工作要多。它还为您提供代码和 UI 之间良好分离的好处(所有“工作”都由 WizardData 和 WizardPage 类完成),以及独立于 UI 测试逻辑的能力。

这也是一种非常 WPF/MVVM 解决问题的方法。

于 2010-01-27T03:21:18.977 回答
0

我承认这并不能直接解决您的问题,但我想我会提到它作为一种可能的选择。我使用 Actipro 的 Wizard 控件取得了不错的效果,当我需要支持时,他们反应迅速。我与他们没有任何关系;我只是喜欢不必编写管道来管理向导。

于 2010-01-27T03:29:07.460 回答
0
  1. 该属性称为“可见性”。
  2. 我发现当我动态添加和删除控件而不是隐藏它们时,我会做得更好。
于 2010-01-27T04:26:35.417 回答
0

我也在寻找向导解决方案。我需要坚持使用常用的 WPF 组件,因此我使用标准表单和选项卡控件实现了向导。

我只在运行时隐藏选项卡,以便在 IDE 中可用。在运行时只需使用 Back, Next, Finish... 来浏览选项卡项

效果很好

于 2013-11-06T15:56:21.460 回答