【问题标题】:MVVM data persistence in SilverlightSilverlight 中的 MVVM 数据持久性
【发布时间】:2012-03-28 12:35:27
【问题描述】:

我正在尝试掌握 MVVM 模式、Silverlight 和 XAML。

我正处于一个将视图加载到框架中的主页的阶段。每个视图都可以绑定到其在 xaml 中的视图模型,然后绑定到视图模型数据。我还针对按钮单击和网格事件等(例如 SelectionChanged)发出命令。

当用户使用主页面导航菜单进行导航时,新视图会加载到框架中,从而创建其自己的视图模型的实例。

我的问题是,我的一个视图的视图模型为某些数据调用了 WCF 方法,然后通过绑定到视图模型中保存的 ObservableCollection 将其显示在网格中。如果进行了更改,它只需调用保存 WCF 方法并传回此 ObservableCollection。但是,当用户双击网格中的一条线时,我需要存储一些信息并将其保存到下一个视图(因为双击也会更改为不同的视图)。诸如“所选项目 ID”之类的信息。

我最终得到的是一组“模型”类,它们与视图模型分开并保存应用程序状态和用户选择等内容。视图模型可以在此处存储内容,例如“选定项目 ID”。在我看来..“模型”几乎是 WCF 调用另一端的所有内容?我认为我不应该在这里创建另一个模型“层”?

我不知道这种方法有什么问题,但感觉不对。

任何人都可以阐明我应该如何做到这一点吗?或者,如果这是一个好的方法?我误解了这里的模式吗?

感谢您的帮助!

【问题讨论】:

    标签: silverlight xaml mvvm


    【解决方案1】:

    我觉得你想多了。我认为这是一个不错的方法。如果您愿意,我认为拥有“UI 模型”是可以合理接受的。每个应用程序通常都有助手类。只要您采用“关注点分离”的方法,那么您的应用程序就可以维护。我的 silverlight 应用程序有一个“模型”区域,可根据需要跟踪应用程序状态。该模型区域还具有特定于 UI 的类。 -- 我的两分钱。

    【讨论】:

      【解决方案2】:

      如果有这样的工作流程 - 您在一个视图模型中设置了“选择”,并且您知道稍后哪个视图模型将使用此值 - 您可能可以使用 EventAggregator 方法并将事件发布到具有所需参数的另一个视图模型,而无需将此值单独存储在某处。

      【讨论】:

      • 但是需要了解信息的视图模型还没有被实例化?仅当框架中的视图通过视图 xaml 更改时才会发生这种情况?
      猜你喜欢
      • 2011-07-03
      • 1970-01-01
      • 2015-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多