2

嗯..它的工作但只有当用户创建一个列表类型的属性时。

这是完整的场景。

我有一个模板化控件(带有复选框的多选组合框)用户提供了一个 List/ObservableCollection 作为其 ItemsSource。集合可以是任何类型(员工、主席、个人等)。ItemsSource 的 DependencyProperty 属于 IList 类型。

用户还可以在名为 SelectedItems 的 DependencyProperty 中提供具有双向绑定的列表(以便他可以将某些项目显示为已检查并取回已检查的项目)

现在问题出在 SelectedItems dp 上。它是模板化控件中的 IList 类型。如果用户将其绑定到,例如,双向绑定不起作用List<Person>。但如果List<Person>更改为List<object>.

我无法弄清楚我做错了什么!

4

1 回答 1

1

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

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

于 2011-01-11T13:32:28.903 回答