0

我正在尝试将应用程序的核心移植到可移植类库,但似乎没有绑定支持。

我正在尝试将 ViewModel 上的属性绑定到我的模型,该模型由 ObservableDictionary ( INotifyPropertyChanged, INotifyCollectionChanged, IDictionary<string, string>) 组成。我通常(使用 WP7)在初始化视图模型时使用以下代码来执行此操作:

SetBinding(MyProperty, new Binding(string.Format("MyDictionary[{0}]", "thekey")) { Source = MyModel });

使用 Portable Class Libraries 时,我将如何处理这个问题,而 Binding 类似乎不可用?

4

1 回答 1

0

我通过将 ViewModel 的基类连接到 ViewModel 的 PropertyChanged 事件和 ObservableDictionary 的 NotifyCollectionChanged 事件来实现这一点。然后我有一个方法(带有一组重载,用于额外提供作为 IValueConverter 的副本的 IPclValueConverter 的实现),它添加到 PclBinding 对象的集合中,该对象是一组 PropertyInfo、字典键、IPclValueConverter 和转换器参数.

在 PropertyChanged/NotifyCollectionChanged 中,我检查是否应该更新绑定,如果是,则执行更新,如果存在则通过转换器传递值。

这意味着从我的原始示例中,我现在在 ViewModel 中编写以下内容,它会根据需要创建绑定:

SetBinding(() => MyProperty, "theKey");

如果有人真的对此代码感兴趣,我很乐意将其发布。:)

于 2012-11-04T16:52:01.227 回答