wpf - 将 View 模型/模型绑定(bind)到真实数据模型

标签 wpf mvvm data-binding

我是 MVVM 和 WPF 本身的新手。我需要在 WPF 中做一些原型(prototype)设计并达到概念性问题。

假设您有向您发送数据的服务器。无论您是否显示当前是否需要将其存储在缓存中,这都是您的“真实数据”,有时您需要将其放在 UI 上(当用户打开特定屏幕时),这就是您的 View 模型。

我的问题很明显——我应该将 UI 绑定(bind)到存储在某个服务中的真实数据,还是应该围绕该数据做一个 viewmodel 包装器并绑定(bind)到它?
在第一种情况下,除非我使用 Dispatcher,否则我会收到“调用线程无法访问此对象”异常,但在模型中调用 Dispatcher 看起来不正确

在后一种情况下,我将需要:

  • 将 90% 的数据从“真实模型”复制到包装器
  • 手动观察底层“真实数据”的变化以更新 View 模型,以防万一实现 INotifyPropertyChanged。

  • 正确的方法是什么?

    最佳答案

    最合适的方式是让您的 ViewModel 与您的 View 需求非常相似。这意味着如果您的 View 有一个列表,那么您很可能在 ViewModel 上至少需要 2 个属性,一个用于 ItemSource,另一个用于选定的 Items。

    关于存储的真实数据,我想说的是,您的服务可以访问它。也许您使用 WPF 或 Silverlight,因此您将保护您的真实物理数据。并且可以交换 View 所需的正确信息。

    我希望它有所帮助。如果您想分享您项目的一些建筑方面,我们可能会给您更多建议。

    关于wpf - 将 View 模型/模型绑定(bind)到真实数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13323953/

    相关文章:

    wpf - WPF- ItemsControl的ListView与TextBoxes性能问题

    asp.net-mvc - 在IF语句中填充Viewmodel?

    c# - 在 C# 和 XAML 中提取 Key 的内容值

    c# - FrameworkPropertyMetadata 的构造函数中的默认值对象实际上做了什么?

    c# - 模拟 protected 方法总是返回 true

    wpf - MVVM 命令后更新 UI 的方式是什么?

    c# - 如何实现TextBox和double值的双向绑定(bind)?

    wpf - 将线条、文本等数据绑定(bind)到 ItemsControl,以便在 Canvas 上进行类似 CAD 的矢量绘图

    wpf - 如何为 WPF 中的单选按钮绑定(bind) Checked 事件?

    wpf - 如何从DataGridColumn获取DataGridColumnHeader?