【发布时间】:2013-02-07 13:00:15
【问题描述】:
我有一个自定义控件,它的 DependencyProperty 类型为 ObservableCollection,它绑定到 observableCollection:
<MyControl MyCollectionProperty = {Binding MyObservableCollection} ...
问题是添加到MyObservableCollection 不更新MyCollectionProperty。
我需要完全替换 MyObservableCollection 以使其正常工作,例如
MyObservableCollection = null;
MyObservableCollection = new ObservableCollection(){...}
有没有更好的方法来解决这个问题?
编辑:
public ObservableCollection<string> Columns
{
get { return (ObservableCollection<string>)GetValue(ColumnsProperty); }
set { SetValue(ColumnsProperty, value); }
}
public static readonly DependencyProperty ColumnsProperty =
DependencyProperty.Register("Columns", typeof(ObservableCollection<string>), typeof(MyControl),
new PropertyMetadata(new ObservableCollection<string>(), OnChanged));
【问题讨论】:
-
你会发布你的依赖属性的定义吗?里面可能有什么东西……
-
您的“MyControl”是否在监控 PropertyChanged 或 CollectionChanged,您是否在监控可观察集合中的对象的 PropertyChanged?
-
是的,CollectionChanged 的定义和处理程序中存在回调,永远不会被触发。由于我们正在讨论添加,因此我看不出在哪些地方监听项目的 PropertyChanged 是相关的。
-
你能发布 OnChanged 方法吗?顺便说一句,为您的 dp 提供默认值不是一个好主意。默认情况下,控件的每个实例都将引用相同的集合实例。
-
啊..关于默认值的好点。我可以发布处理程序,但它有点无关紧要,因为它永远不会被调用。
标签: c# wpf data-binding observablecollection dependency-properties