使用可移植类库绑定MVVM应用程序的方法

使用可移植类库绑定MVVM应用程序的方法,mvvm,portable-class-library,Mvvm,Portable Class Library,我试图将应用程序的核心移植到可移植类库,但似乎没有绑定支持 我正在尝试将ViewModel上的属性绑定到我的模型,该模型由ObservableDictionary(INotifyPropertyChanged、INotifyCollectionChanged、IDictionary)组成。我通常(使用WP7)在初始化视图模型时使用以下代码来完成此操作: SetBinding(MyProperty,新绑定(string.Format(“MyDictionary[{0}]”,thekey”){Sou

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

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

SetBinding(MyProperty,新绑定(string.Format(“MyDictionary[{0}]”,thekey”){Source=MyModel})


在使用可移植类库时,如果绑定类似乎不可用,我将如何实现这一点?

我通过将ViewModels的基类连接到ViewModel的PropertyChanged事件和ObservalEditionary的NotifyCollectionChanged事件来实现这一点。然后,我有了一个方法(带有一组重载,用于另外提供IPclValueConverter的实现,它是IValueConverter的副本),它添加到PclBinding对象的集合中,PclBinding对象是一组PropertyInfo、dictionary key、IPclValueConverter和一个converter参数

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

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

SetBinding(()=>MyProperty,“theKey”)


如果有人真的对这段代码感兴趣,我很乐意发布它。:)

是否在ViewModel和Model之间使用数据绑定?我确信绑定类存在,因为它在XAML中使用。看看我是的,我需要从我的ViewModel数据绑定到模型上的一个可观察的IDictionary。你链接到的文章没有描述我的情况。我想我需要创建一个与INotifyCollectionChanged挂钩的包装器来更新ViewModel,但从以前使用绑定的简单性来看,这似乎是一个相当混乱的方法。我认为需要一些代码来更好地理解您的场景。没有什么比将视图模型上的属性绑定到使用公开NotifyCollectionChanged的词典公开。当我使用一个从控件派生的类来处理这个问题时,我已经包含了创建这个绑定的示例代码,但是我想我必须进行一些手动连接来处理这个问题,因为我既没有依赖属性也没有绑定,我希望能有一些更智能的东西,但事实就是这样,关于典型的MVVM模式,这对我来说是新的。