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>
,则可以使用。
我无法弄清楚我做得不对的是什么!
答案 0 :(得分:1)
在SelectedItems
属性上放置TwoWay绑定是没有意义的。这意味着控件应该创建并将实现IList
的对象的实例分配给源对象上的属性。但是,控件无法知道要创建的实际类型以分配给属性。
相反,您应该使用OneWay绑定到源对象中预先存在的List,尽管它是空的。然后,控制任务只是从ItemsSource
属性中提供的列表中添加或删除该列表中的成员。