2010-08-30 127 views
1

我想要做一些数据绑定的魔法。我有一个货运视图,列出货件,并在列表中提供过滤和订购功能。过滤器字符串框,Delivery Status过滤器(复选框)和Ordering Radiobuttons是数据绑定到ViewModel中的属性。我想添加保存状态的功能,我选择通过在xml文档中保存控制状态来完成此操作。以前我以前做过这件事的时候没有什么问题,只是使用数据绑定来读/写值。将WPF控件绑定到多个源(不是传统的多重绑定)

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

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

回答

2

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

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

然后,该视图不必管理数据。

+0

我想我会像你描述的那样工作。对于过滤器相关项目,我将在VM代码中存储/检索XML以保存会话之间的状态,对于其他非ViewModel相关项目,我可以将数据绑定到XML数据源,全部保存在View close上。 – CodeWarrior 2010-08-30 19:51:53

1

没有我知道的。我真的不会这样做 - 如果你的datacontext是视图模型,并且视图模型具有过滤器的属性,你几乎肯定应该坚持并检索相关的viewmodel状态以保持状态过滤器。试图保存控件状态,然后检索它,设置它,并根据新的控件状态设置视图模型听起来像更多的工作,更容易出现错误。