我正在尝试创建自定义控件。此控件需要一个类似于列表框或树视图的绑定,它可以绑定到ObservableCollection,并根据需要添加和删除项目。但是,添加到集合中的项目不会直接显示在UI上。它们将被处理,然后根据需要添加到控件中。例如,如果传入表示文件完整路径的字符串,则会将其添加到TreeView中,每个目录都是新节点。
我试图将自定义控件创建为ItemsControl的子类,然后绑定工作,但我无法弄清楚如何知道何时将一个项添加到控件中以便我可以处理它。我还考虑过将ObservableCollection类型的DependencyProperty添加到控件中,然后根据这些指令绑定到它:http://msdn.microsoft.com/en-us/library/aa970563.aspx。但是以这种方式设置它根本不允许我绑定到DependencyProperty。
此时,我并不关心我用什么方法到达那里,只要我能从第一段得到结果。有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
通过覆盖控件中的OnItemsChanged
,您可以在绑定到ObservableCollection
的{{1}}中添加或删除项目时运行所需的任何代码(在Items属性的填充期间) 。如果您直接连接到OC的事件,此方法的参数与您将获得的ItemsSource
相同。
以这种方式执行此操作将允许您对您正在考虑的新OC属性执行相同的操作,但继续使用内置的NotifyCollectionChangedEventArgs
属性将集合绑定到控件。