【问题标题】:Internationalized Wizard Passing model data between the wizard steps国际化向导在向导步骤之间传递模型数据
【发布时间】:2012-11-14 10:47:02
【问题描述】:

我在此处找到了以下向导示例: http://www.codeproject.com/Articles/31837/Creating-an-Internationalized-Wizard-in-WPF

现在我花了相当长的时间研究这个例子,我几乎明白了一切。但我不知道他是如何在不同的模型视图之间传递对象的。 正如你可以想象的那样,这一步非常关键..

在示例中,他在主向导视图模型中使用了 CupOfCoffee 对象,并设法在整个向导中对其进行了调整。但我在任何地方都看不到他是怎么做到的。

我已经尝试过像他一样重新创建一个项目,但没有成功。

谁能告诉我他是如何在不同的 viewModel 之间传递对象的?

【问题讨论】:

    标签: c# wpf mvvm prism wizard


    【解决方案1】:

    只是一个疯狂的猜测:

    在CreatePages() 中,他使用this.CupOfCoffee 初始化每个pageviewmodel,这似乎是模型。

    您知道可以在 codeproject 下载完整的源代码吗?

    【讨论】:

    • 是的,我知道,过去几个小时我一直在盯着它看,但他通过值而不是通过引用传递对象
    • 你为什么这么认为?这是一个参考传递!
    • 刚刚在引用类型和值类型的区别之间得到了很好的教训……仍然对 byval 的用途有点困惑,相当混乱。但感谢您的帮助。
    【解决方案2】:

    CupOfCoffee 通过 CoffeeWizardViewModel 在所有 ViewModel 之间共享,这驱动了整个向导。

    它保持“全局”状态和其他继承自 CoffeeWizzardPageViewModelBase 的 ViewModel,每个 ViewModel 只包含一个页面的逻辑。

    【讨论】:

    • 但是在向导步骤视图中设置cupofcoffee对象时,设置的是CoffeeWizzardPageViewModelBase的coffeeobject,但是他是如何从CoffeeWizzardPageViewModelBase中获取数据到CoffeeWizardViewModel的呢?
    • 感谢您的回答,不得不选择一个,但这个答案同样好。不知道引用类型和值类型之间的区别。我认为 byval 总是给出一个价值,而不是一个参考。
    猜你喜欢
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多