Silverlight:DependencyProperty(IList)无法正常工作的双向绑定

时间:2011-01-11 07:08:36

标签: silverlight binding silverlight-4.0 dependency-properties two-way-binding

Well..its工作但仅当用户创建属性为List的属性时。

这是完整的方案。

我有一个模板控件(Multi Select ComboBox with Checkboxes) 用户将List / ObservableCollection作为其ItemsSource。该集合可以是任何类型(员工,主席,人员等)。 ItemsSource的DependencyProperty属于IList类型。

用户还可以在名为SelectedItems的DependencyProperty中为List提供双向绑定(这样他就可以显示一些项目进行检查并获取被检查的项目)

现在问题出在SelectedItems dp上。它在模板控制中属于IList类型。 如果用户将其绑定到List<Person>,则双向绑定不起作用。 但如果List<Person>更改为List<object>,则可以使用。

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

1 个答案:

答案 0 :(得分:1)

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

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