如何存储以前的向导页面

本文关键字:向导 何存储 存储 | 更新日期: 2023-09-27 18:22:46

实际上我正在尝试执行向导控件。在其中,当单击下一个按钮时,我可以动态加载3个页面。当我点击下一个按钮时,我需要存储页面详细信息,这样我就创建了一个字典来存储用户控件。是否有其他建议来存储上一页的详细信息。

如何存储以前的向导页面

有很多方法可以满足您的需求。这就是我要做的,我认为这与MVVM的设计模式非常一致。

  1. 定义一个ViewModel类,该类包含所有要收集的变量(与页面的分区无关)
  2. 添加名为"currentPage"的公共属性
  3. 定义向导的框架。可能是<窗口>元素,带有StackPanel。窗口的顶部有一个标题,底部有一个用于"上一步"answers"下一步"按钮的区域(如果你愿意,还可以使用"完成")
  4. 在StackPanel的主要区域中,放置一个并将其DataContext绑定到ViewModel
  5. 在ViewModel中创建Next和Pref命令(使用Prism DelegateCommand,或实现从ICommand派生的轻量级版本)。6/此外,使用适当的CanExecute逻辑将"完成"按钮绑定到命令(您收集了足够的数据吗?)
  6. 下一个和上一个"CanExectue"逻辑将查看currentPage。例如,当currentPage为0时,Prev命令CanExecute将返回false
  7. 您将有3个不同的数据模板,每个页面一个。每个数据模板将显示您希望在该页面上收集的属性的不同子集。将UI控件绑定到ViewModel中的属性,并使用双向绑定模式
  8. 从INotifyPropertyChanged派生ViewModel,并让所有setter触发适当的通知。至少currentPage属性需要它,但为了完成解决方案,请对所有属性都这样做
  9. 在Next和Prev命令中,Execute方法将修改currentPage属性(Setter应触发通知)。视图将自动更新
  10. 对于主区域ItemControl,实现从DataTemplateSelector派生的WizardTemplateSelector。将其定义为资源,并使用{StaticResource}绑定分配ItemControl.ContentTemplateSelector
  11. 如果需要,还可以在窗口左侧设置一个列表控件,将"选定项目索引"绑定到当前页面

EDIT(解释者):基本思想是有一个单独的ViewModel,它可以在几个不同的数据模板中查看,这取决于当前页面。