我正在使用Dan Wahlin定义的datacontextproxy类来解决导致该发现的许多小时似乎非常困难的事情。
我有一个绑定到ObservableCollection<Accounts>
的组合框。组合框还具有值DisplayMemberPath=AccountNumber
和SelectedValue={Binding SelectedAccount}
。然后我有一个DataForm,它的CurrentItem属性也绑定到SelectedAccount。在我的DataForm中,我有一些需要额外下拉菜单的字段(AcctCode,UsageCode等)。为了缓解我在DataForm中遇到的绑定问题,我实现了datacontextproxy,允许我将我的cbobox的ItemsSource设置为{Binding Source={StaticResource DataContextProxy}, Path=DataSource.AccountCodes}"
。这在最终结果方面效果很好。
在遇到这个问题之前,我真的很难找到这个发现。我没有使用domaincontext,所以我不能使用Kyle Mcllelans ComboBoxex,也不能使用提供的绝大多数解决方案。我确实试图在我的View中创建一个ViewModel实例作为本地资源,但是a)我觉得MVVM很脏,而且b)它无法创建新的VM实例,因为我的VM需要许多服务引用在构造上传递。
无论如何,我只是想知道我是否应该采用这种方式来实现更高性能,更多MVVM,更易于维护,更多更好等等。
谢谢,
斯科特
答案 0 :(得分:2)
Scott我也决定使用DataContextProxy。我认为使用它仍然提供了一个很好的MVVM解决方案,其中视图只通过绑定或命令了解VM。
在Silverlight 5发布之前,我将其用作临时解决方案。在Silverlight 5中引入了祖先绑定,这将为数据绑定提供更大的灵活性。