【发布时间】:2018-01-23 12:00:21
【问题描述】:
我有一个具有依赖属性的用户控件:
public static readonly DependencyProperty MasterListProperty = DependencyProperty.Register("MasterList", typeof(IEnumerable<MyObject>), typeof(MyControl), new FrameworkPropertyMetadata(null, new PropertyChangedCallback(MasterListChanged)));
我的对象实现了 INotifyPropertyChanged。我正在尝试将此依赖属性绑定到该对象的ObservableCollection。但是,当我将项目添加到此依赖项属性绑定到的根集合中时,我没有得到任何更新。
这是将此依赖项属性绑定到我的集合的控件:
<image:MyControl MasterList="{Binding Path=SourceList, UpdateSourceTrigger=PropertyChanged}"></image:MyControl>
我已尝试输入Mode=TwoWay,但我的 Dependency 属性仍然没有得到任何更新。我有一个绑定到依赖属性计数的工具提示,它会更新,但是我的 MasterListChanged 事件没有被触发。
有什么想法吗?
【问题讨论】:
-
你有没有换过
SourceList?如果没有调用 MasterListChanged,那么我认为答案是“否” -
将 MyObject 添加到 ObservableCollection 时不会调用您的 PropertyChangedCallback。只有当依赖属性设置为新的 IEnumerable
(ObservableCollection ) 时才会调用它。 -
@ASh 添加项目时,我将其添加到 SourceList
-
@mm8 因此,当我向 SourceList 添加新项目时,我仍然没有触发 INotifyPropertyChanged 事件。是因为我绑定到一个完整的 ObservableCollection 吗?
-
@James,当您向
SourceList添加项目时,SourceList引用保持不变,绑定不会检测到任何更改并且不会调用 PropertyChangedCallback
标签: c# wpf observablecollection dependency-properties