【问题标题】:Binding WPF control to multiple sources (not traditional multibinding)将 WPF 控件绑定到多个源(不是传统的多重绑定)
【发布时间】:2010-08-30 14:18:45
【问题描述】:

我正在尝试做一些数据绑定魔术。我有一个货件视图,其中列出了货件,并在列表上提供了过滤和排序功能。过滤器字符串框、交付状态过滤器(复选框)和订购单​​选按钮数据绑定到 ViewModel 中的属性。我想添加保存状态的功能,我选择通过将控制状态保存在 xml 文档中来实现这一点。以前我做过这个,没有什么问题,使用数据绑定来来回读/写值。

但是,现在我有一个困惑。我的过滤器控件当前数据绑定到 ViewModel 中的项目。我可以编写代码,在加载时将它们的数据绑定从 xml 更改为 ViewModel,反之亦然,但这会很麻烦。

是否有一种机制可以用来实现绑定到两个相同源并同时更新它们的能力?

【问题讨论】:

    标签: wpf data-binding multibinding


    【解决方案1】:

    这听起来像是视图模型的问题。

    为什么不将保存的值加载到视图模型中,并让视图模型决定要公开哪些数据?

    那么视图不必关心管理数据。

    【讨论】:

    • 我想我会按照你的描述工作。对于与过滤器相关的项目,我将在 VM 代码中存储/检索 XML 以保存会话之间的状态,对于其他非 ViewModel 相关的项目,我可以将数据绑定到 XML 数据源,全部保存在视图关闭时。
    【解决方案2】:

    我不知道。

    我的意见:我真的不会这样做 - 如果您的数据上下文是视图模型,并且视图模型具有过滤器的属性,那么您几乎可以肯定应该持久化并检索相关的视图模型状态以保持过滤器的状态.尝试保存 controlstate,然后检索它、设置它,并根据新的 controlstate 设置视图模型听起来需要更多的工作并且更容易出现错误。

    【讨论】:

      猜你喜欢
      • 2011-05-25
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      相关资源
      最近更新 更多