Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何存储以前的向导页面?_C#_Wpf_Mvvm - Fatal编程技术网

C# 如何存储以前的向导页面?

C# 如何存储以前的向导页面?,c#,wpf,mvvm,C#,Wpf,Mvvm,实际上我正在尝试做一个向导控件。在其中,我在单击下一步按钮时动态加载了3个页面。当我单击next按钮时,我需要存储页面详细信息,因此我创建了一个字典来存储usercontrol。是否有其他建议来存储上一页的详细信息。有很多方法可以满足您的要求。这就是我要做的,我认为这非常符合MVVM设计模式 定义一个ViewModel类,该类包含要收集的所有变量(无论页面的分区如何) 添加名为“currentPage”的公共属性 定义向导的框架。可能是一个元素,带有StackPanel。窗口顶部有一个标题,底部

实际上我正在尝试做一个向导控件。在其中,我在单击下一步按钮时动态加载了3个页面。当我单击next按钮时,我需要存储页面详细信息,因此我创建了一个字典来存储usercontrol。是否有其他建议来存储上一页的详细信息。

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

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

  • 编辑(解释者):基本思想是创建一个ViewModel,它可以在多个不同的数据模板中查看,具体取决于当前页面。

    我发现,我在dictionary中使用的UserControl是Windows.Forms.UserControl。但是我添加了Windows.Controls.UserControl..否否..如果有人给我一些存储上一页的建议的话详细信息,这将有助于我学习WPF,我对WPF和MVVM非常陌生。请看这篇伟大的文章:@SvenG为什么不将此作为一个答案发布?@PVitt我认为这不“值得”作为一个答案,因为没有真正的努力来检索此信息……此外,我不确定“仅链接的答案”是否会受到反对