Silverlight:DependencyProperty(IList)不能正常工作的双向绑定

问题描述:

Well..its working但是只有当用户创建一个List类型的属性。Silverlight:DependencyProperty(IList)不能正常工作的双向绑定

下面是完整的场景。

我有一个模板控件(复选框多选组合框) 用户给出一个列表/的ObservableCollection作为它的的ItemsSource。该集合可以是任何类型(员工,主席,人员等)。 ItemsSource的DependencyProperty属于IList类型。

用户也可以给在一个DependencyProperty称为SelectedItems双向绑定(使他能够表现出一些项目,如检查,并取回其被检查的项目)

现在的问题是与SelectedItems列表DP。它是模板控件中的IList类型。 如果用户已将其绑定到List<Person>,则双向绑定不起作用。 但是,如果List<Person>更改为List<object>,则它可以工作。

我无法弄清楚我做得不对的是什么!

SelectedItems属性上放置TwoWay绑定没有意义。这意味着控件应该创建并分配一个实现IList的对象实例到源对象上的属性。但是,控制无法知道分配给属性的实际类型。

相反,您应该使用OneWay绑定到源对象中预先存在的List,尽管它是空的。然后控制任务是简单地从ItemsSource属性中提供的列表中添加或删除该列表中的成员。

+0

但是,当我将控件中的列表添加/删除成员时,OneWay绑定会更新源代码吗? – Jags 2011-01-12 05:53:45